Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Google ³öÆ· PythonÖ®±àÂë¹æ·¶
 
±àÒ룺¹ùÇÇ£¬ÐíÐÂÀ¤
  2368  次浏览      31
 2019-10-11 
 
±à¼­ÍƼö:
±¾ÎÄΪ¹È¸è¹Ù·½³öÆ·µÄPython±àÂë¹æ·¶£¬Ï£Íû¶Ô¸÷λPython¿ª·¢ÕßÓÐÒæ¡£
±¾ÎÄÀ´×ÔÓÚ21CTO£¬ÓÉ»ðÁú¹ûÈí¼þÒÀÈ»±à¼­¡¢ÍƼö¡£

GoogleµÄPython±àÂë¹æ·¶

±³¾°

PythonÊÇGoogle¹«Ë¾Ö÷ҪʹÓõĽű¾ÓïÑÔ¡£Õâ±¾·ç¸ñÖ¸ÄÏÖ÷Òª°üº¬µÄÊÇÕë¶ÔPythonµÄ±à³Ì¹æ·¶¡£

²»ÒÔ¹æ¾Ø²»³É·½Ô²£¬¹æ·¶×ÔÈ»ÊÇÊ®·ÖÖØÒªµÄ£¬¶øÔÚ¶¯Ì¬ÓïÑÔÖУ¬ÓÈÆäÖØÒª£¨ºÜ¶àÈËÄÃPythonд½Å±¾£¬»ù±¾ÊÇËæÐÄËùÓûµØÐ´£¬×ÔÈ»ºóÆÚά»¤À§ÄÑ£©¡£Ëùν¡º±øÂíδ¶¯Á¸²ÝÏÈÐС»£¬ÎÒÃÇÓ¦¸ÃÔÚд´úÂëǰ£¬¾Í×öºÃ³ä×ãµÄ ¡°±íÃæ¹¦·ò¡±¡£

²»ÃÔÐÅȨÍþ£¬ÕâÀïÖ¸Google Python Guide£¬½öÊÇÊʺÏGoogleµÄ¹æ·¶£¬²¢²»ÊÇÉçÇø¹æ·¶£¬¸÷λ¿ÉÒÔ×ÔÐнøÐй淶¼ô²Ã¡£

Ϊ°ïÖú¶ÁÕßÄܹ»½«´úÂë׼ȷ¸ñʽ»¯£¬ÎÒÃÇÌṩÁËÕë¶ÔµÄVimµÄÅäÖÃÎļþ¡£¶ÔÓÚEmacsµÄÓû§£¬¿ÉÒÔ±£³ÖĬÈÏÉèÖü´¿É¡£

Lint

Ìáʾ

¶ÔÄãµÄPython´úÂëÔËÐÐpylint¡£

¶¨Òå:

pylintÊÇÒ»¸öÔÚPythonÔ´´úÂëÖвéÕÒbugµÄ¹¤¾ß¡£¶ÔÓÚCºÍC++ÕâÑùµÄ²»ÄÇô¶¯Ì¬µÄÓïÑÔ(ÒëÕß×¢: Ô­ÎÄÊÇless dynamic) £¬ÕâЩbugͨ³£ÓɱàÒëÆ÷À´²¶»ñ¡£ÓÉÓÚPythonµÄ¶¯Ì¬ÓïÑÔÌØÐÔ£¬ÓÐЩ¾¯¸æÌáʾ¿ÉÄܲ»¶Ô£¬²»¹ýα¸æ¾¯Ó¦¸Ã»á±È½ÏÉÙ¡£

Óŵã:

¿ÉÒÔ²¶»ñÈÝÒ׺öÊӵĴíÎó£¬ÀýÈçÊäÈë´íÎó£¬Ê¹ÓÃδ¸³ÖµµÄ±äÁ¿µÈ¡£

ȱµã:

pylint²¢²»ÍêÃÀ¡£ÒªÀûÓÃÆäÓÅÊÆ£¬ÎÒÃÇÓÐʱºîÐèÒª£º

a) Î§ÈÆ×ÅËüÀ´Ð´´úÂ룻

b) ÒÖÖÆÆä¸æ¾¯£»

c) ¸Ä½øËü»òÕߺöÂÔËü¡£

½áÂÛ:

È·±£¶ÔÄãµÄ´úÂëÔËÐÐpylint£¬ÒÖÖÆ²»×¼È·µÄ¾¯¸æÌáʾ£¬ÒÔ±ãÄܹ»½«ÆäËû¾¯¸æ±©Â¶³öÀ´¡£

ÎÒÃÇ¿ÉÒÔͨ¹ýÉèÖÃÒ»¸öÐÐ×¢ÊÍÀ´ÒÖÖÆ¸æ¾¯£¬ÀýÈçÈçÏ´úÂë:

dict = 'something awful'
# Bad Idea... pylint: disable=redefined-builtin

pylintµÄ¾¯¸æ·Ö±ðÊÇÒÔÒ»¸öÊý×Ö±àºÅ(ÈçC0112)ºÍÒ»¸ö·ûºÅÃû³Æ(Èçempty-docstring)À´½øÐбêʶµÄ¡£ÔÚ±àддúÂë»ò¸üÐÂÒÑÓдúÂëʱ¶Ô¸æ¾¯½øÐÐÕï¶Ï£¬ÍƼöʹÓ÷ûºÅÃûÀ´±êʶ¡£

Èç¹û¾¯¸æµÄ·ûºÅÃû²»¹»¼ûÃûʶÒ⣬ÄÇôÇë¶ÔÆäÔö¼ÓÒ»¸öÏêϸ½âÊÍ¡£²ÉÓÃÕâÖÖÒÖÖÆ·½Ê½µÄºÃ´¦ÊÇÎÒÃÇ¿ÉÒÔÇáËɲéÕÒÒÖÖÆ²¢»Ø¹ËËüÃÇ¡£

Äã¿ÉÒÔʹÓÃÃüÁîÀ´»ñÈ¡pylint¸æ¾¯ÁÐ±í£¬¿ÉÒÔʹÓÃÃüÁÒÔ»ñÈ¡¹ØÓÚÌØ¶¨ÏûÏ¢µÄ¸ü¶àÐÅÏ¢¡£ÈçÏ£º

pylint --list-msgspylint --help-msg=C6409

Ïà±È½ÏÓÚ֮ǰʹÓõIJÎÊý£¬±¾ÎÄÍÆ¼öʹÓÃÈçϲÎÊý£º

pylint: disable-msgpylint: disable

ÒªÒÖÖÆ¡±²ÎÊýδʹÓᱸ澯£¬Äã¿ÉÒÔÓá±_¡±×÷Ϊ²ÎÊý±êʶ·û£¬»òÕßÔÚ²ÎÊýÃûǰ¼Ó¡±unused_¡±. Óöµ½²»Äܸıä²ÎÊýÃûµÄÇé¿ö£¬Äã¿ÉÒÔͨ¹ýÔÚº¯Êý¿ªÍ·¡±Ìáµ½¡±ËüÃÇÀ´Ïû³ý¸æ¾¯¡£ÀýÈç:

def foo ( a , unused_b , unused_c , d = None , e = None ):
      _ = d , e
      return a

µ¼Èë

Ìáʾ

ÔÚ¿ª·¢ÖУ¬½ö¶Ô°üºÍÄ£¿éʹÓõ¼Èë²Ù×÷¡£

¶¨Òå:

Ä£¿é¼ä¹²Ïí´úÂëµÄÖØÓûúÖÆ¡£

Óŵã:

ÃüÃû¿Õ¼ä¹ÜÀíÔ¼¶¨Ê®·Ö¼òµ¥¡£Ã¿¸ö±êʶ·ûµÄÔ´¶¼ÓÃÒ»ÖÖÒ»Öµķ½Ê½Ö¸Ê¾¡£x.Obj±íʾObj¶ÔÏñ¶¨ÒåÔÚÄ£¿éxÖС£

ȱµã:

Ä£¿éÃûÈÔ¿ÉÄܳåÍ»¡£ÓÐЩģ¿éÃûÌ«³¤£¬²»Ì«·½±ã¡£

½áÂÛ:

ʹÓÃÀ´µ¼Èë°üºÍÄ£¿é£º

import x

ÕâÑùÀ´Ê¹Óã¬ÆäÖÐxÊǰüǰ׺, yÊDz»´øÇ°×ºµÄÄ£¿éÃû¡£

from x import y

ʹÓÃ,Èç¹ûÁ½¸öÒªµ¼ÈëµÄÄ£¿é¶¼½Ð×öz»òÕßyÌ«³¤ÁË¡£

from x import y as z

ÀýÈ磬ģ¿é

sound.effects.echo

¿ÉÒÔÓÃÈçÏ·½Ê½µ¼È룺

from sound.effects import echo
...
echo . EchoFilter ( input , output , delay = 0.7 , atten = 4 )

µ¼Èëʱ²»ÒªÊ¹ÓÃÏà¶ÔÃû³Æ. ¼´Ê¹Ä£¿éÔÚͬһ¸ö°üÖУ¬Ò²ÒªÊ¹ÓÃÍêÕû°üÃû¡£ÕâÄܰïÖúÄã±ÜÃâÎÞÒâ¼äµ¼ÈëÒ»¸ö°üÁ½´Î¡£

°ü

Ìáʾ

ʹÓÃÄ£¿éµÄȫ·¾¶ÃûÀ´µ¼Èëÿ¸öÄ£¿é¡£

Óŵã:

±ÜÃâÄ£¿éÃû³Æ³åÍ»£¬²éÕÒ°üÒ²¸ü¼ÓÈÝÒס£

ȱµã:

²¿Êð´úÂë±äµÃÀ§ÄÑ£¬ÒòΪÄã±ØÐë¸´ÖÆ°ü²ã´Î¡£

½áÂÛ:

ËùÓеÄдúÂë¶¼Ó¦¸ÃÓÃÍêÕû°üÃûÀ´µ¼Èëÿ¸öÄ£¿é¡£Ó¦¸ÃÏñÏÂÃæ´úÂëÕâÑùµ¼È룺

# Reference in code with complete name.

import sound.effects.echo

# Reference in code with just module name (preferred).

from sound.effects import echo

Òì³£

Ìáʾ

ÔÊÐíʹÓÃÒì³££¬µ«±ØÐëҪʮ·ÖСÐÄ¡£

¶¨Òå:

Òì³£ÊÇÒ»ÖÖÌø³ö´úÂë¿éµÄÕý³£¿ØÖÆÁ÷À´´¦Àí´íÎó»òÕ߯äËüÒì³£Ìõ¼þµÄ·½Ê½.

Óŵã:

Õý³£²Ù×÷´úÂëµÄ¿ØÖÆÁ÷²»»áºÍ´íÎó´¦Àí´úÂë»ìÔÚÒ»Æð. µ±Ä³ÖÖÌõ¼þ·¢Éúʱ, ËüÒ²ÔÊÐí¿ØÖÆÁ÷Ìø¹ý¶à¸ö¿ò¼Ü. ÀýÈç, Ò»²½Ìø³öN¸öǶÌ׵ĺ¯Êý, ¶ø²»±Ø¼ÌÐøÖ´ÐдíÎóµÄ´úÂë.

ȱµã:

¿ÉÄܻᵼÖÂÈÃÈËÀ§»óµÄ¿ØÖÆÁ÷. µ÷ÓÿâʱÈÝÒ×´í¹ý´íÎóÇé¿ö.

½áÂÛ:

Òì³£±ØÐë×ñÊØÌØ¶¨Ìõ¼þ:

1.ÏñÕâÑù´¥·¢Òì³£: »òÕß.²»ÒªÊ¹ÓÃÁ½¸ö²ÎÊýµÄÐÎʽ( )»òÕß¹ýʱµÄ×Ö·û´®Òì³£( ).

raise MyException("Error message")raise MyExceptionraise MyException, "Error message"raise "Error message"

2.Ä£¿é»ò°üÓ¦¸Ã¶¨Òå×Ô¼ºµÄÌØ¶¨ÓòµÄÒì³£»ùÀà, Õâ¸ö»ùÀàÓ¦¸Ã´ÓÄÚ½¨µÄExceptionÀà¼Ì³Ð. Ä£¿éµÄÒì³£»ùÀàÓ¦¸Ã½Ð×ö¡±Error¡±.

class Error ( Exception ):

pass

3.ÓÀÔ¶²»ÒªÊ¹ÓÃexcept:Óï¾äÀ´²¶»ñËùÓÐÒì³£,Ò²²»Òª²¶»ñException»òÕßStandardError,³ý·ÇÄã´òËãÖØÐ´¥·¢¸ÃÒì³£,»òÕßÄãÒѾ­ÔÚµ±Ç°Ï̵߳Ä×îÍâ²ã(¼ÇµÃ»¹ÊÇÒª´òÓ¡Ò»Ìõ´íÎóÏûÏ¢).ÔÚÒì³£Õâ·½Ãæ, Python·Ç³£¿íÈÝ, except:ÕæµÄ»á²¶»ñ°üÀ¨PythonÓï·¨´íÎóÔÚÄÚµÄÈκδíÎó.ʹÓÃexcept:ºÜÈÝÒ×Òþ²ØÕæÕýµÄbug.

4.¾¡Á¿¼õÉÙtry/except¿éÖеĴúÂëÁ¿. try¿éµÄÌå»ýÔ½´ó, ÆÚÍûÖ®ÍâµÄÒì³£¾ÍÔ½ÈÝÒ×±»´¥·¢. ÕâÖÖÇé¿öÏÂ, try/except¿é½«Òþ²ØÕæÕýµÄ´íÎó.

5.ʹÓÃfinally×Ó¾äÀ´Ö´ÐÐÄÇЩÎÞÂÛtry¿éÖÐÓÐûÓÐÒì³£¶¼Ó¦¸Ã±»Ö´ÐеĴúÂë. Õâ¶ÔÓÚÇåÀí×ÊÔ´³£³£ºÜÓÐÓÃ, ÀýÈç¹Ø±ÕÎļþ.

6.µ±²¶»ñÒ쳣ʱ,ʹÓÃas¶ø²»ÒªÓöººÅ.ÀýÈ磺

try :

   aise Error

except Error as error :

   pass

È«¾Ö±äÁ¿

Ìáʾ

±ÜÃâʹÓÃÈ«¾Ö±äÁ¿¡£

¶¨Òå:

¶¨ÒåÔÚÄ£¿é¼¶µÄ±äÁ¿.

Óŵã:

ż¶ûÓÐÓÃ.

ȱµã:

µ¼Èëʱ¿ÉÄܸıäÄ£¿éÐÐΪ, ÒòΪµ¼ÈëÄ£¿éʱ»á¶ÔÄ£¿é¼¶±äÁ¿¸³Öµ.

½áÂÛ:

±ÜÃâʹÓÃÈ«¾Ö±äÁ¿, ÓÃÀà±äÁ¿À´´úÌæ£¬µ«Ò²ÓÐһЩÀýÍâ:

1£©½Å±¾µÄĬÈÏÑ¡Ïî.

2£©Ä£¿é¼¶³£Á¿. ÀýÈç: PI = 3.14159. ³£Á¿Ó¦¸ÃÈ«´óд, ÓÃÏ»®ÏßÁ¬½Ó.

3£©ÓÐʱºòÓÃÈ«¾Ö±äÁ¿À´»º´æÖµ»òÕß×÷Ϊº¯Êý·µ»ØÖµºÜÓÐÓÃ.

4£©Èç¹ûÐèÒª, È«¾Ö±äÁ¿Ó¦¸Ã½öÔÚÄ£¿éÄÚ²¿¿ÉÓÃ, ²¢Í¨¹ýÄ£¿é¼¶µÄ¹«¹²º¯ÊýÀ´·ÃÎÊ.

ǶÌ×/¾Ö²¿/ÄÚ²¿Àà»òº¯Êý

Ìáʾ

¹ÄÀøÊ¹ÓÃǶÌ×/±¾µØ/ÄÚ²¿Àà»òº¯Êý

¶¨Òå:

Àà¿ÉÒÔ¶¨ÒåÔÚ·½·¨, º¯Êý»òÕßÀàÖÐ. º¯Êý¿ÉÒÔ¶¨ÒåÔÚ·½·¨»òº¯ÊýÖÐ. ·â±ÕÇø¼äÖж¨ÒåµÄ±äÁ¿¶ÔǶÌ׺¯ÊýÊÇÖ»¶ÁµÄ.

Óŵã:

ÔÊÐí¶¨Òå½öÓÃÓÚÓÐЧ·¶Î§µÄ¹¤¾ßÀàºÍº¯Êý.

ȱµã:

ǶÌ×Àà»ò¾Ö²¿ÀàµÄʵÀý²»ÄÜÐòÁл¯(pickled).

½áÂÛ:

ÍÆ¼öʹÓÃ.

ÁбíÍÆµ¼(List Comprehensions)

¿ÉÒÔÔÚ¼òµ¥Çé¿öÏÂʹÓá£

¶¨Òå:

ÁбíÍÆµ¼(list comprehensions)ÓëÉú³ÉÆ÷±í´ïʽ(generator expression)ÌṩÁËÒ»ÖÖ¼ò½à¸ßЧµÄ·½Ê½À´´´½¨ÁбíºÍµü´úÆ÷, ¶ø²»±Ø½èÖúmap(), filter(), »òÕßlambda.

Óŵã:

¼òµ¥µÄÁбíÍÆµ¼¿ÉÒÔ±ÈÆäËüµÄÁÐ±í´´½¨·½·¨¸ü¼ÓÇåÎú¼òµ¥. Éú³ÉÆ÷±í´ïʽ¿ÉÒÔÊ®·Ö¸ßЧ, ÒòΪËüÃDZÜÃâÁË´´½¨Õû¸öÁбí.

ȱµã:

¸´ÔÓµÄÁбíÍÆµ¼»òÕßÉú³ÉÆ÷±í´ïʽ¿ÉÄÜÄÑÒÔÔĶÁ.

½áÂÛ:

ÊÊÓÃÓÚ¼òµ¥Çé¿ö. ÿ¸ö²¿·ÖÓ¦¸Ãµ¥¶ÀÖÃÓÚÒ»ÐÐ: Ó³Éä±í´ïʽ, forÓï¾ä, ¹ýÂËÆ÷±í´ïʽ. ½ûÖ¹¶àÖØforÓï¾ä»ò¹ýÂËÆ÷±í´ïʽ. ¸´ÔÓÇé¿öÏ»¹ÊÇʹÓÃÑ­»·.

Yes :
  result = []
  for x in range ( 10 ):
    for y in range ( 5 ):
        if x * y > 10 :
          result . append (( x , y ))
  for x in xrange ( 5 ):
    for y in xrange ( 5 ):
        if x != y :
          for z in xrange ( 5 ):
              if y != z :
                yield ( x , y , z )


  return (( x , complicated_transform ( x ))
            for x in long_generator_function ( parameter )
            if x is not None )


  squares = [ x * x for x in range ( 10 )]


  eat ( jelly_bean for jelly_bean in jelly_beans
        if jelly_bean . color == 'black' )
No :
  result = [( x , y ) for x in range ( 10 ) for y in range ( 5 ) if x * y > 10 ]


  return (( x , y , z )
    for x in xrange ( 5 )
    for y in xrange ( 5 )
    if x != y
    for z in xrange ( 5 )
    if y != z )

ĬÈϵü´úÆ÷ºÍ²Ù×÷·û

Èç¹ûÀàÐÍÖ§³Ö, ¾ÍʹÓÃĬÈϵü´úÆ÷ºÍ²Ù×÷·û. ±ÈÈçÁбí, ×ֵ估ÎļþµÈ¡£

¶¨Òå:

ÈÝÆ÷ÀàÐÍ, Ïñ×ÖµäºÍÁбí, ¶¨ÒåÁËĬÈϵĵü´úÆ÷ºÍ¹ØÏµ²âÊÔ²Ù×÷·û(inºÍnot in)

Óŵã:

ĬÈϲÙ×÷·ûºÍµü´úÆ÷¼òµ¥¸ßЧ, ËüÃÇÖ±½Ó±í´ïÁ˲Ù×÷, ûÓжîÍâµÄ·½·¨µ÷ÓÃ. ʹÓÃĬÈϲÙ×÷·ûµÄº¯ÊýÊÇͨÓõÄ. Ëü¿ÉÒÔÓÃÓÚÖ§³Ö¸Ã²Ù×÷µÄÈκÎÀàÐÍ.

ȱµã:

Äãû·¨Í¨¹ýÔĶÁ·½·¨ÃûÀ´Çø·Ö¶ÔÏóµÄÀàÐÍ(ÀýÈç, has_key()Òâζ×Å×Öµä). ²»¹ýÕâÒ²ÊÇÓŵã.

½áÂÛ:

Èç¹ûÀàÐÍÖ§³Ö, ¾ÍʹÓÃĬÈϵü´úÆ÷ºÍ²Ù×÷·û, ÀýÈçÁбí, ×ÖµäºÍÎļþ. ÄÚ½¨ÀàÐÍÒ²¶¨ÒåÁ˵ü´úÆ÷·½·¨. ÓÅÏÈ¿¼ÂÇÕâЩ·½·¨, ¶ø²»ÊÇÄÇЩ·µ»ØÁбíµÄ·½·¨. µ±È»£¬ÕâÑù±éÀúÈÝÆ÷ʱ£¬Ä㽫²»ÄÜÐÞ¸ÄÈÝÆ÷¡£

Yes : for key in adict : ...
    if key not in adict : ...
    if obj in alist : ...
    for line in afile : ...
    for k , v in dict . iteritems (): ...
No : for key in adict . keys (): ...
    if not adict . has_key ( key ): ...
    for line in afile . readlines (): ...

 

Éú³ÉÆ÷

°´ÐèʹÓÃÉú³ÉÆ÷¡£

¶¨Òå:

ËùνÉú³ÉÆ÷º¯Êý, ¾ÍÊÇÿµ±ËüÖ´ÐÐÒ»´ÎÉú³É(yield)Óï¾ä, Ëü¾Í·µ»ØÒ»¸öµü´úÆ÷, Õâ¸öµü´úÆ÷Éú³ÉÒ»¸öÖµ. Éú³ÉÖµºó, Éú³ÉÆ÷º¯ÊýµÄÔËÐÐ״̬½«±»¹ÒÆð, Ö±µ½ÏÂÒ»´ÎÉú³É.

Óŵã:

¼ò»¯´úÂë, ÒòΪÿ´Îµ÷ÓÃʱ, ¾Ö²¿±äÁ¿ºÍ¿ØÖÆÁ÷µÄ״̬¶¼»á±»±£´æ. ±ÈÆðÒ»´Î´´½¨Ò»ÏµÁÐÖµµÄº¯Êý, Éú³ÉÆ÷ʹÓõÄÄÚ´æ¸üÉÙ.

ȱµã:

ûÓÐ.

½áÂÛ:

¹ÄÀøÊ¹ÓÃ. ×¢ÒâÔÚÉú³ÉÆ÷º¯ÊýµÄÎĵµ×Ö·û´®ÖÐʹÓá±Yields:¡±¶ø²»ÊÇ¡±Returns:¡±.

Lambdaº¯Êý

ÊÊÓÃÓÚµ¥Ðк¯Êý¡£

¶¨Òå:

ÓëÓï¾äÏà·´, lambdaÔÚÒ»¸ö±í´ïʽÖж¨ÒåÄäÃûº¯Êý.³£ÓÃÓÚΪmap()ºÍfilter()Ö®ÀàµÄ¸ß½×º¯Êý¶¨Ò廨µ÷º¯Êý»òÕß²Ù×÷·û.

Óŵã:

·½±ã.

ȱµã:

±È±¾µØº¯Êý¸üÄÑÔĶÁºÍµ÷ÊÔ. ûÓк¯ÊýÃûÒâζ×ŶÑÕ»¸ú×Ù¸üÄÑÀí½â. ÓÉÓÚlambdaº¯Êýͨ³£Ö»°üº¬Ò»¸ö±í´ïʽ, Òò´ËÆä±í´ïÄÜÁ¦ÓÐÏÞ.

½áÂÛ:

ÊÊÓÃÓÚµ¥Ðк¯Êý. Èç¹û´úÂ볬¹ý60-80¸ö×Ö·û, ×îºÃ»¹ÊǶ¨Òå³É³£¹æ(ǶÌ×)º¯Êý.

¶ÔÓÚ³£¼ûµÄ²Ù×÷·û£¬ÀýÈç³Ë·¨²Ù×÷·û£¬Ê¹ÓÃoperatorÄ£¿éÖеĺ¯ÊýÒÔ´úÌælambdaº¯Êý.ÀýÈç,ÍÆ¼öʹÓÃoperator.mul,¶ø²»ÊÇ.lambda x, y: x * y

Ìõ¼þ±í´ïʽ

ÊÊÓÃÓÚµ¥Ðк¯Êý¡£

¶¨Òå:

Ìõ¼þ±í´ïʽÊǶÔÓÚifÓï¾äµÄÒ»ÖÖ¸üΪ¼ò¶ÌµÄ¾ä·¨¹æÔò.ÀýÈç: .x = 1 if cond else 2

Óŵã:

±ÈifÓï¾ä¸ü¼Ó¼ò¶ÌºÍ·½±ã.

ȱµã:

±ÈifÓï¾äÄÑÓÚÔĶÁ. Èç¹û±í´ïʽºÜ³¤£¬ ÄÑÓÚ¶¨Î»Ìõ¼þ.

½áÂÛ:

ÊÊÓÃÓÚµ¥Ðк¯Êý. ÔÚÆäËûÇé¿öÏ£¬ÍƼöʹÓÃÍêÕûµÄifÓï¾ä¡£

ĬÈϲÎÊýÖµ

ÊÊÓÃÓڴ󲿷ÖÇé¿ö¡£

¶¨Òå:

Äã¿ÉÒÔÔÚº¯Êý²ÎÊýÁбíµÄ×îºóÖ¸¶¨±äÁ¿µÄÖµ,ÀýÈç, .Èç¹ûµ÷ÓÃfooʱֻ´øÒ»¸ö²ÎÊý,Ôòb±»ÉèΪ0.Èç¹û´øÁ½¸ö²ÎÊý,ÔòbµÄÖµµÈÓÚµÚ¶þ¸ö²ÎÊý.def foo(a, b = 0):

Óŵã:

Äã¾­³£»áÅöµ½Ò»Ð©Ê¹ÓôóÁ¿Ä¬ÈÏÖµµÄº¯Êý, µ«Å¼¶û(±È½ÏÉÙ¼û)ÄãÏëÒª¸²¸ÇÕâЩĬÈÏÖµ. ĬÈϲÎÊýÖµÌṩÁËÒ»ÖÖ¼òµ¥µÄ·½·¨À´Íê³ÉÕâ¼þÊÂ, Äã²»ÐèҪΪÕâЩº±¼ûµÄÀýÍⶨÒå´óÁ¿º¯Êý. ͬʱ, PythonÒ²²»Ö§³ÖÖØÔØ·½·¨ºÍº¯Êý, ĬÈϲÎÊýÊÇÒ»ÖÖ¡±·ÂÔì¡±ÖØÔØÐÐΪµÄ¼òµ¥·½Ê½.

ȱµã:

ĬÈϲÎÊýÖ»ÔÚÄ£¿é¼ÓÔØÊ±ÇóÖµÒ»´Î. Èç¹û²ÎÊýÊÇÁбí»ò×ÖµäÖ®ÀàµÄ¿É±äÀàÐÍ, Õâ¿ÉÄܻᵼÖÂÎÊÌâ. Èç¹ûº¯ÊýÐÞ¸ÄÁ˶ÔÏó(ÀýÈçÏòÁбí×·¼ÓÏî), ĬÈÏÖµ¾Í±»ÐÞ¸ÄÁË.

½áÂÛ:

¹ÄÀøÊ¹ÓÃ, ²»¹ýÓÐÈçÏÂ×¢ÒâÊÂÏî:

²»ÒªÔÚº¯Êý»ò·½·¨¶¨ÒåÖÐʹÓÿɱä¶ÔÏñ×÷ΪĬÈÏÖµ¡£

Yes : def foo ( a , b = None ):
   if b is None :
        b = []
No : def foo ( a , b = []):
        ...
No : def foo ( a , b = time . time ()): # The time the module was loaded???
        ...
No : def foo ( a , b = FLAGS . my_thing ): # sys.argv has not yet been parsed...
        ...

ÊôÐÔ(properties)

·ÃÎʺÍÉèÖÃÊý¾Ý³ÉԱʱ, Äãͨ³£»áʹÓüòµ¥, ÇáÁ¿¼¶µÄ·ÃÎʺÍÉèÖú¯Êý. ½¨ÒéÓÃÊôÐÔ£¨properties£©À´´úÌæËüÃÇ¡£

¶¨Òå:

Ò»ÖÖÓÃÓÚ°ü×°·½·¨µ÷Óõķ½Ê½. µ±ÔËËãÁ¿²»´ó, ËüÊÇ»ñÈ¡ºÍÉèÖÃÊôÐÔ(attribute)µÄ±ê×¼·½Ê½¡£

Óŵã:

ͨ¹ýÏû³ý¼òµ¥µÄÊôÐÔ(attribute)·ÃÎÊʱÏÔʽµÄgetºÍset·½·¨µ÷ÓÃ, ¿É¶ÁÐÔÌá¸ßÁË. ÔÊÐíÀÁ¶èµÄ¼ÆËã. ÓÃPythonicµÄ·½Ê½À´Î¬»¤ÀàµÄ½Ó¿Ú. ¾ÍÐÔÄܶøÑÔ, µ±Ö±½Ó·ÃÎʱäÁ¿ÊǺÏÀíµÄ, Ìí¼Ó·ÃÎÊ·½·¨¾ÍÏÔµÃËöËé¶øÎÞÒâÒå. ʹÓÃÊôÐÔ(properties)¿ÉÒÔÈÆ¹ýÕâ¸öÎÊÌâ. ½«À´Ò²¿ÉÒÔÔÚ²»ÆÆ»µ½Ó¿ÚµÄÇé¿öϽ«·ÃÎÊ·½·¨¼ÓÉÏ.

ȱµã:

ÊôÐÔ(properties)ÊÇÔÚgetºÍset·½·¨ÉùÃ÷ºóÖ¸¶¨,ÕâÐèҪʹÓÃÕßÔÚ½ÓÏÂÀ´µÄ´úÂëÖÐ×¢Òâ: setºÍgetÊÇÓÃÓÚÊôÐÔ(properties)µÄ(³ýÁËÓÃ@property×°ÊÎÆ÷´´½¨µÄÖ»¶ÁÊôÐÔ).±ØÐë¼Ì³Ð×ÔobjectÀà.¿ÉÄÜÒþ²Ø±ÈÈç²Ù×÷·ûÖØÔØÖ®ÀàµÄ¸±×÷ÓÃ.¼Ì³Ðʱ¿ÉÄÜ»áÈÃÈËÀ§»ó.

½áÂÛ:

Äãͨ³£Ï°¹ßÓÚʹÓ÷ÃÎÊ»òÉèÖ÷½·¨À´·ÃÎÊ»òÉèÖÃÊý¾Ý,ËüÃǼòµ¥¶øÇáÁ¿.²»¹ýÎÒÃǽ¨ÒéÄãÔÚеĴúÂëÖÐʹÓÃÊôÐÔ.Ö»¶ÁÊôÐÔÓ¦¸ÃÓÃ@property ×°ÊÎÆ÷À´´´½¨.

Èç¹û×ÓÀàûÓи²¸ÇÊôÐÔ, ÄÇôÊôÐԵļ̳пÉÄÜ¿´ÉÏÈ¥²»Ã÷ÏÔ. Òò´ËʹÓÃÕß±ØÐëÈ·±£·ÃÎÊ·½·¨¼ä½Ó±»µ÷ÓÃ, ÒÔ±£Ö¤×ÓÀàÖеÄÖØÔØ·½·¨±»ÊôÐÔµ÷ÓÃ(ʹÓÃÄ£°å·½·¨Éè¼ÆÄ£Ê½).

Yes : import math
   class Square ( object ):

      """A square with two properties: a writable area and a read-only perimeter.


      """ To use:
      """ >>> sq = Square(3)
      >>> sq.area
      9
      >>> sq.perimeter
      12
      >>> sq.area = 16
      >>> sq.side
      4
      >>> sq.perimeter
      16
      "" "


     def __init__ ( self , side ):
      self . side = side


      def __get_area ( self ):
         """Calculates the 'area' property."""
         return self . side ** 2


      def ___get_area ( self ):
         """Indirect accessor for 'area' property."""
         return self . __get_area ()


      def __set_area ( self , area ):
         """Sets the 'area' property."""
         self . side = math . sqrt ( area )


      def ___set_area ( self , area ):
         """Indirect setter for 'area' property."""
         self . _SetArea ( area )


         area = property ( ___get_area , ___set_area ,
      doc = """Gets or sets the area of the square.""" )


      @property
      def perimeter ( self ):
         return self . side * 4

 

(ÒëÕß×¢: ÀÏʵ˵, ÎÒ¾õµÃÕâ¶ÎʾÀý´úÂëºÜ²»Ç¡µ±, ÓбØÒªÕâôµ°ÌÛÂð?)

True/FalseµÄÇóÖµ

¾¡¿ÉÄÜʹÓÃÒþʽfalse¡£

¶¨Òå:

PythonÔÚ²¼¶ûÉÏÏÂÎÄÖлὫijЩֵÇóֵΪfalse. °´¼òµ¥µÄÖ±¾õÀ´½², ¾ÍÊÇËùÓеġ±¿Õ¡±Öµ¶¼±»ÈÏΪÊÇfalse. Òò´Ë0£¬ None, [], {}, ¡°¡± ¶¼±»ÈÏΪÊÇfalse.

Óŵã:

ʹÓÃPython²¼¶ûÖµµÄÌõ¼þÓï¾ä¸üÒ×¶ÁÒ²¸ü²»Ò×·¸´í. ´ó²¿·ÖÇé¿öÏÂ, Ò²¸ü¿ì.

ȱµã:

¶ÔC/C++¿ª·¢ÈËÔ±À´Ëµ, ¿ÉÄÜ¿´ÆðÀ´Óеã¹Ö.

½áÂÛ:

¾¡¿ÉÄÜʹÓÃÒþʽµÄfalse,ÀýÈç:ʹÓöø²»ÊÇ.²»¹ý»¹ÊÇÓÐһЩעÒâÊÂÏîÐèÒªÄãÃú¼ÇÔÚÐÄ:

if foo:if foo != []:

1.ÓÀÔ¶²»ÒªÓÃ==»òÕß!=À´±È½Ïµ¥¼þ, ±ÈÈçNone. ʹÓÃis»òÕßis not.

2.×¢Òâ:µ±ÄãдÏÂʱ,ÄãÆäʵ±íʾµÄÊÇ.ÀýÈç:µ±ÄãÒª²âÊÔÒ»¸öĬÈÏÖµÊÇNoneµÄ±äÁ¿»ò²ÎÊýÊÇ·ñ±»ÉèΪÆäËüÖµ.Õâ¸öÖµÔÚ²¼¶ûÓïÒåÏ¿ÉÄÜÊÇfalse!if x:if x is not None

3.ÓÀÔ¶²»ÒªÓÃ==½«Ò»¸ö²¼¶ûÁ¿ÓëfalseÏà±È½Ï.ʹÓôúÌæ.Èç¹ûÄãÐè񻂿·ÖfalseºÍNone,ÄãÓ¦¸ÃÓÃÏñÕâÑùµÄÓï¾ä.if not x:if not x and x is not None:

4.¶ÔÓÚÐòÁÐ(×Ö·û´®,Áбí,Ôª×é),ҪעÒâ¿ÕÐòÁÐÊÇfalse.Òò´Ë»òÕ߱ȻòÒª¸üºÃ.if not seq:if seq:if len(seq):if not len(seq):

5.´¦ÀíÕûÊýʱ, ʹÓÃÒþʽfalse¿ÉÄÜ»áµÃ²»³¥Ê§(¼´²»Ð¡ÐĽ«Noneµ±×ö0À´´¦Àí). Äã¿ÉÒÔ½«Ò»¸öÒÑÖªÊÇÕûÐÍ(ÇÒ²»ÊÇlen()µÄ·µ»Ø½á¹û)µÄÖµÓë0±È½Ï.

Yes : if not users :
        print 'no users'
    if foo == 0 :
        self . handle_zero ()


    if i % 10 == 0 :
        self . handle_multiple_of_ten ()
No : if len ( users ) == 0 :
        print 'no users'


    if foo is not None and not foo :
        self . handle_zero ()


    if not i % 10 :
        self . handle_multiple_of_ten ()

 

6.×¢Òâ'0'(×Ö·û´®)»á±»µ±×ötrue.

¹ýʱµÄÓïÑÔÌØÐÔ

¾¡¿ÉÄÜʹÓÃ×Ö·û´®·½·¨È¡´ú×Ö·û´®Ä£¿é. ʹÓú¯Êýµ÷ÓÃÓ﷨ȡ´úapply(). ʹÓÃÁбíÍÆµ¼, forÑ­»·È¡´úfilter(), map()ÒÔ¼°reduce()¡£

¶¨Òå:

µ±Ç°°æ±¾µÄPythonÌṩÁË´ó¼Òͨ³£¸üϲ»¶µÄÌæ´úÆ·.

½áÂÛ:

ÎÒÃDz»Ê¹Óò»Ö§³ÖÕâÐ©ÌØÐÔµÄPython°æ±¾, ËùÒÔûÀíÓɲ»ÓÃеķ½Ê½.

Yes : words = foo . split ( ':' )
    [ x [ 1 ] for x in my_list if x [ 2 ] == 5 ]


     map ( math . sqrt , data ) # Ok. No inlined lambda expression.


     fn ( * args , ** kwargs )
No : words = string . split ( foo , ':' )


     map ( lambda x : x [ 1 ], filter ( lambda x : x [ 2 ] == 5 , my_list ))


     apply ( fn , args , kwargs )

´Ê·¨×÷ÓÃÓò(Lexical Scoping)

ÍÆ¼öʹÓá£

¶¨Òå:

ǶÌ×µÄPythonº¯Êý¿ÉÒÔÒýÓÃÍâ²ãº¯ÊýÖж¨ÒåµÄ±äÁ¿, µ«ÊDz»Äܹ»¶ÔËüÃǸ³Öµ. ±äÁ¿°ó¶¨µÄ½âÎöÊÇʹÓôʷ¨×÷ÓÃÓò, Ò²¾ÍÊÇ»ùÓÚ¾²Ì¬µÄ³ÌÐòÎı¾¡£

¶ÔÒ»¸ö¿éÖеÄij¸öÃû³ÆµÄÈκθ³Öµ¶¼»áµ¼ÖÂPython½«¶Ô¸ÃÃû³ÆµÄÈ«²¿ÒýÓõ±×ö¾Ö²¿±äÁ¿, ÉõÖÁÊǸ³ÖµÇ°µÄ´¦Àí. Èç¹ûÅöµ½globalÉùÃ÷, ¸ÃÃû³Æ¾Í»á±»ÊÓ×÷È«¾Ö±äÁ¿.

Ò»¸öʹÓÃÕâ¸öÌØÐÔµÄÀý×Ó:

def get_adder ( summand1 ):
    """Returns a function that adds     numbers to a given number."""
        def adder ( summand2 ):
    return summand1 + summand2


    return adder

 

(ÒëÕß×¢:Õâ¸öÀý×ÓÓеã¹îÒì,ÄãÓ¦¸ÃÕâÑùʹÓÃÕâ¸öº¯Êý: )

sum = get_adder(summand1)(summand2)

Óŵã:

ͨ³£¿ÉÒÔ´øÀ´¸ü¼ÓÇåÎú, ÓÅÑŵĴúÂë. ÓÈÆä»áÈÃÓо­ÑéµÄLispºÍScheme(»¹ÓÐHaskell, MLµÈ)³ÌÐòÔ±¸Ðµ½ÐÀο.

ȱµã:

¿ÉÄܵ¼ÖÂÈÃÈËÃÔ»óµÄbug.ÀýÈçÏÂÃæÕâ¸öÒÀ¾ÝPEP-0227µÄÀý×Ó:

i = 4
def foo ( x ):
    def bar ():
        print i ,
    # ...
    # A bunch of code here
    # ...
    for i in x : # Ah, i *is* local to Foo, so this     is what Bar sees
        print i ,
    bar ()

Òò´Ë»á´òÓ¡,²»ÊÇ.

foo([1, 2, 3])1 2 3 31 2 3 4

(ÒëÕß×¢: xÊÇÒ»¸öÁбí, forÑ­»·ÆäʵÊǽ«xÖеÄÖµÒÀ´Î¸³¸øi.ÕâÑù¶ÔiµÄ¸³Öµ¾ÍÒþʽµÄ·¢ÉúÁË, Õû¸öfooº¯ÊýÌåÖеÄi¶¼»á±»µ±×ö¾Ö²¿±äÁ¿, °üÀ¨bar()ÖеÄÄǸö. ÕâÒ»µãÓëC++Ö®ÀàµÄ¾²Ì¬ÓïÑÔ»¹ÊÇÓкܴó²î±ðµÄ.)

½áÂÛ:

¹ÄÀøÊ¹Óá£

º¯ÊýÓë·½·¨×°ÊÎÆ÷

Èç¹ûºÃ´¦ºÜÏÔÈ», ¾ÍÃ÷ÖǶø½÷É÷µÄʹÓÃ×°ÊÎÆ÷¡£

¶¨Òå:

ÓÃÓÚº¯Êý¼°·½·¨µÄ×°ÊÎÆ÷ (Ò²¾ÍÊÇ@±ê¼Ç).×î³£¼ûµÄ×°ÊÎÆ÷ÊÇ@classmethodºÍ@staticmethod,ÓÃÓÚ½«³£¹æº¯Êýת»»³ÉÀà·½·¨»ò¾²Ì¬·½·¨.²»¹ý,×°ÊÎÆ÷Óï·¨Ò²ÔÊÐíÓû§×Ô¶¨Òå×°ÊÎÆ÷.ÌØ±ðµØ,¶ÔÓÚij¸öº¯Êýmy_decorator,ÏÂÃæµÄÁ½¶Î´úÂëÊǵÈЧµÄ:

class C ( object ):
    @my_decorator
    def method ( self ):
        # method body ...
class C ( object ):
    def method ( self ):
        # method body ...
    method = my_decorator ( method )

 

Óŵã:

ÓÅÑŵÄÔÚº¯ÊýÉÏÖ¸¶¨Ò»Ð©×ª»». ¸Ãת»»¿ÉÄܼõÉÙÒ»Ð©ÖØ¸´´úÂë, ±£³ÖÒÑÓк¯Êý²»±ä(enforce invariants), µÈ.

ȱµã:

×°ÊÎÆ÷¿ÉÒÔÔÚº¯ÊýµÄ²ÎÊý»ò·µ»ØÖµÉÏÖ´ÐÐÈκβÙ×÷, Õâ¿ÉÄܵ¼ÖÂÈÃÈ˾ªÒìµÄÒþ²ØÐÐΪ. ¶øÇÒ, ×°ÊÎÆ÷ÔÚµ¼ÈëʱִÐÐ. ´Ó×°ÊÎÆ÷´úÂëµÄʧ°ÜÖлָ´¸ü¼Ó²»¿ÉÄÜ.

½áÂÛ:

Èç¹ûºÃ´¦ºÜÏÔÈ», ¾ÍÃ÷ÖǶø½÷É÷µÄʹÓÃ×°ÊÎÆ÷. ×°ÊÎÆ÷Ó¦¸Ã×ñÊØºÍº¯ÊýÒ»ÑùµÄµ¼ÈëºÍÃüÃû¹æÔò. ×°ÊÎÆ÷µÄpythonÎĵµÓ¦¸ÃÇåÎúµÄ˵Ã÷¸Ãº¯ÊýÊÇÒ»¸ö×°ÊÎÆ÷. ÇëΪװÊÎÆ÷±àдµ¥Ôª²âÊÔ¡£

±ÜÃâ×°ÊÎÆ÷×ÔÉí¶ÔÍâ½çµÄÒÀÀµ(¼´²»ÒªÒÀÀµÓÚÎļþ, socket,Êý¾Ý¿âÁ¬½ÓµÈ),ÒòΪװÊÎÆ÷ÔËÐÐʱÕâЩ×ÊÔ´¿ÉÄܲ»¿ÉÓÃ(ÓÉpydoc»òÆäËü¹¤¾ßµ¼Èë).Ó¦¸Ã±£Ö¤Ò»¸öÓÃÓÐЧ²ÎÊýµ÷ÓõÄ×°ÊÎÆ÷ÔÚËùÓÐÇé¿ö϶¼Êdzɹ¦µÄ¡£

×°ÊÎÆ÷ÊÇÒ»ÖÖÌØÊâÐÎʽµÄ¡±¶¥¼¶´úÂ롱.²Î¿¼ºóÃæ¹ØÓÚMainµÄ»°Ìâ¡£

¹ØÓÚÏß³Ì

²»ÒªÒÀÀµÄÚ½¨ÀàÐ͵ÄÔ­×ÓÐÔ¡£

ËäÈ»PythonµÄÄÚ½¨ÀàÐÍÀýÈç×ֵ俴ÉÏÈ¥ÓµÓÐÔ­×Ó²Ù×÷, µ«ÊÇÔÚijЩÇéÐÎÏÂËüÃÇÈÔÈ»²»ÊÇÔ­×ÓµÄ(¼´: Èç¹û__hash__»ò__eq__±»ÊµÏÖΪPython·½·¨)ÇÒËüÃǵÄÔ­×ÓÐÔÊÇ¿¿²»×¡µÄ. ÄãÒ²²»ÄÜÖ¸ÍûÔ­×Ó±äÁ¿¸³Öµ(ÒòΪÕâ¸ö·´¹ýÀ´ÒÀÀµ×Öµä)¡£

ÓÅÏÈʹÓÃQueueÄ£¿éµÄQueueÊý¾ÝÀàÐÍ×÷ΪÏ̼߳äµÄÊý¾ÝͨÐÅ·½Ê½.ÁíÍâ,ʹÓÃthreadingÄ£¿é¼°ÆäËøÔ­Óï(locking primitives).Á˽âÌõ¼þ±äÁ¿µÄºÏÊÊʹÓ÷½Ê½,ÕâÑùÄã¾Í¿ÉÒÔʹÓÃthreading.ConditionÀ´È¡´úµÍ¼¶±ðµÄËøÁË¡£

ÍþÁ¦¹ý´óµÄÌØÐÔ

Òª±ÜÃâʹÓÃÕâÐ©ÌØÐÔ¡£

¶¨Òå:

PythonÊÇÒ»ÖÖÒì³£Áé»îµÄÓïÑÔ, ËüΪÄãÌṩÁ˺ܶ໨ÉÚµÄÌØÐÔ, ÖîÈçÔªÀà(metaclasses), ×Ö½ÚÂë·ÃÎÊ, ÈÎÒâ±àÒë(on-the-fly compilation), ¶¯Ì¬¼Ì³Ð, ¶ÔÏñ¸¸ÀàÖØ¶¨Òå(object reparenting), µ¼ÈëºÚ¿Í(import hacks), ·´Éä, ϵͳÄÚÐÞ¸Ä(modification of system internals), µÈµÈ.

Óŵã:

Ç¿´óµÄÓïÑÔÌØÐÔ, ÄÜÈÃÄãµÄ´úÂë¸ü½ô´Õ¡£

ȱµã:

ʹÓÃÕâЩºÜ¡±¿á¡±µÄÌØÐÔÊ®·ÖÓÕÈË, µ«²»ÊǾø¶Ô±ØÒª. ʹÓÃÆæ¼¼ÒùÇɵĴúÂ뽫¸ü¼ÓÄÑÒÔÔĶÁºÍµ÷ÊÔ. ¿ªÊ¼¿ÉÄÜ»¹ºÃ(¶ÔÔ­×÷Õß¶øÑÔ), µ«µ±Äã»Ø¹Ë´úÂë, ËüÃÇ¿ÉÄÜ»á±ÈÄÇЩÉÔ³¤Ò»µãµ«ÊǺÜÖ±½ÓµÄ´úÂë¸ü¼ÓÄÑÒÔÀí½â¡£

½áÂÛ:

ÔÚÄãµÄ´úÂëÖбÜÃâʹÓÃÕâÐ©ÌØÐÔ¡£

̟̞

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name.

Ó¦¸Ã±ÜÃâµÄÃû³Æ

µ¥×Ö·ûÃû³Æ, ³ýÁ˼ÆÊýÆ÷ºÍµü´úÆ÷.

°ü/Ä£¿éÃûÖеÄÁ¬×Ö·û(-)

˫ϻ®Ïß¿ªÍ·²¢½áβµÄÃû³Æ(Python±£Áô, ÀýÈç__init__)

ÃüÃûÔ¼¶¨

Ëùν¡±ÄÚ²¿(Internal)¡±±íʾ½öÄ£¿éÄÚ¿ÉÓÃ, »òÕß, ÔÚÀàÄÚÊDZ£»¤»ò˽Óеġ£

Óõ¥Ï»®Ïß(_)¿ªÍ·±íʾģ¿é±äÁ¿»òº¯ÊýÊÇprotectedµÄ(ʹÓÃfrom module import *ʱ²»»á°üº¬)¡£

ÓÃ˫ϻ®Ïß(__)¿ªÍ·µÄʵÀý±äÁ¿»ò·½·¨±íʾÀàÄÚ˽ÓС£

½«Ïà¹ØµÄÀàºÍ¶¥¼¶º¯Êý·ÅÔÚͬһ¸öÄ£¿éÀï. ²»ÏñJava, û±ØÒªÏÞÖÆÒ»¸öÀàÒ»¸öÄ£¿é.

¶ÔÀàÃûʹÓôóд×Öĸ¿ªÍ·µÄµ¥´Ê(ÈçCapWords, ¼´Pascal·ç¸ñ), µ«ÊÇÄ£¿éÃûÓ¦¸ÃÓÃСд¼ÓÏ»®Ïߵķ½Ê½(Èçlower_with_under.py). ¾¡¹ÜÒѾ­ÓкܶàÏÖ´æµÄÄ£¿éʹÓÃÀàËÆÓÚCapWords.pyÕâÑùµÄÃüÃû, µ«ÏÖÔÚÒѾ­²»¹ÄÀøÕâÑù×ö, ÒòΪÈç¹ûÄ£¿éÃûÅöÇɺÍÀàÃûÒ»ÖÂ, Õâ»áÈÃÈËÀ§ÈÅ¡£

PythonÖ®¸¸GuidoÍÆ¼öµÄ¹æ·¶£º

Main

¼´Ê¹ÊÇÒ»¸ö´òËã±»ÓÃ×÷½Å±¾µÄÎļþ, Ò²Ó¦¸ÃÊǿɵ¼ÈëµÄ. ²¢ÇÒ¼òµ¥µÄµ¼Èë²»Ó¦¸Ãµ¼ÖÂÕâ¸ö½Å±¾µÄÖ÷¹¦ÄÜ(main functionality)±»Ö´ÐÐ, ÕâÊÇÒ»ÖÖ¸±×÷ÓÃ. Ö÷¹¦ÄÜÓ¦¸Ã·ÅÔÚÒ»¸ömain()º¯ÊýÖС£

ÔÚPythonÖÐ, pydocÒÔ¼°µ¥Ôª²âÊÔÒªÇóÄ£¿é±ØÐëÊǿɵ¼ÈëµÄ. ÄãµÄ´úÂëÓ¦¸ÃÔÚÖ´ÐÐÖ÷³ÌÐòǰ×ÜÊǼì²é if __name__ == '__main__' , ÕâÑùµ±Ä£¿é±»µ¼ÈëʱÖ÷³ÌÐò¾Í²»»á±»Ö´ÐС£

def main():
    ...

if __name__ == '__main__':
    main()

ËùÓеĶ¥¼¶´úÂëÔÚÄ£¿éµ¼Èëʱ¶¼»á±»Ö´ÐÐ. ҪСÐIJ»ÒªÈ¥µ÷Óú¯Êý, ´´½¨¶ÔÏó, »òÕßÖ´ÐÐÄÇЩ²»Ó¦¸ÃÔÚʹÓÃpydocʱִÐеIJÙ×÷¡£

×¢ÊÍ(Comments)

ͬ´úÂë²»Ò»ÖµÄ×¢ÊͱÈûעÊ͸ü²î¡£µ±´úÂëÐÞ¸Äʱ£¬Ê¼ÖÕÓÅÏȸüÐÂ×¢ÊÍ¡£

×¢ÊÍÓ¦¸ÃÊÇÍêÕûµÄ¾ä×Ó¡£Èç¹û×¢ÊÍÊÇÒ»¸ö¶ÌÓï»ò¾ä×Ó£¬Ê××ÖĸӦ¸Ã´óд£¬³ý·ÇËüÊÇÒ»¸öÒÔСд×Öĸ¿ªÍ·µÄ±êʶ·û(ÓÀÔ¶²»ÒªÐ޸ıêʶ·ûµÄ´óСд)¡£

Èç¹û×¢Êͺ̣ܶ¬¿ÉÒÔÊ¡ÂÔĩβµÄ¾äºÅ¡£×¢ÊÍ¿éͨ³£ÓÉÒ»¸ö»ò¶à¸ö¶ÎÂä×é³É£¬¶ÎÂäÊÇÓÉÍêÕûµÄ¾ä×Ó¹¹³ÉµÄ£¬Ã¿¸ö¾ä×ÓÓ¦¸ÃÒÔ¾äºÅ½áβ¡£

ÄãÓ¦¸ÃÔÚ½áÊøÓï¾äµÄ¾äµã(a sentence-ending period)ºóʹÓÃÁ½¸ö¿Õ¸ñ¡£

ÒëÕß×¢£º·ÇÓ¢Óï¹ú¼ÒµÄPython³ÌÐòÔ±£ºÇëÓÃÓ¢ÓïÊéдÄãµÄ×¢ÊÍ£¬³ý·ÇÄã120%µÄÈ·ÐÅ´úÂëÓÀÔ¶²»»á±»²»¶®ÄãµÄÓïÑÔµÄÈËÔĶÁ¡£

1£©×¢ÊÍ¿é(Block Comments)

×¢ÊÍ¿éͨ³£Ó¦ÓÃÓÚ¸úËæÆäºóµÄһЩ (»òÕßÈ«²¿) ´úÂ룬²¢ºÍÕâЩ´úÂëÓÐ×ÅÏàͬµÄËõ½ø ²ã´Î¡£×¢ÊÍ¿éÖÐÿÐÐÒÔ '#' ºÍÒ»¸ö¿Õ¸ñ¿ªÊ¼ (³ý·ÇËüÊÇ×¢ÊÍÄÚµÄËõ½øÎı¾)¡£

×¢ÊÍ¿éÄڵĶÎÂäÒÔ½öº¬µ¥¸ö '#' µÄÐзָ

2ÐÐÄÚ×¢ÊÍ(Inline Comments)

½Ú¼óʹÓÃÐÐÄÚ×¢ÊÍ¡£Ò»¸öÐÐÄÚ×¢ÊÍÊǺÍÓï¾äÔÚͬһÐеÄ×¢ÊÍ¡£ÐÐÄÚ×¢ÊÍÓ¦¸ÃÖÁÉÙÓÃÁ½¸ö¿Õ¸ñºÍÓï¾ä·Ö¿ª¡£ËüÃÇÓ¦¸ÃÒÔÒ»¸ö '#' ºÍµ¥¸ö¿Õ¸ñ¿ªÊ¼¡£

ÐÐÄÚ×¢ÊͲ»ÊDZØÐèµÄ£¬ÊÂʵÉÏ£¬Èç¹û˵µÄÊÇÏÔ¶øÒ×¼ûµÄÊ£¬»¹»áʹÈË·ÖÐÄ¡£

   
2368 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì