
çãäŒæ©ã®åŸãDavid Goodgerã®èšäº
ãæ¬ç©ã®Pythonistã®ããã«ã³ãŒããæžãïŒPython idiomat
ãã®ç¿»èš³ã®æåŸã®éšåã玹ä»
ããŸãæåãš
2çªç®ã®éšåãžã®ãªã³ã¯ã
ãã®èšäºã®èè
ã¯ã¢ã¡ãªã«ãçºèŠããŠããªãããšã匷調ããŸãããã»ãšãã©ã®Pythonistã¯ã¢ã¡ãªã«ã«ãç¹å¥ãªéæ³ããèŠã€ããŸããã ããããPythonã§ããŸããŸãªã³ã³ã¹ãã©ã¯ãã䜿çšããã³éžæããæ¹æ³è«ã¯ãèªã¿ããããšPEP8ã€ããªãã®ãŒãžã®è¿ããšããç¹ã§éåžžã«è©³çްã§ããèè
ã®èšäºã®ããã€ãã®å Žæã§ã¯ããœãŒã¹ã³ãŒãã®äŸã¯ãããŸããã ãã¡ãããç§ã¯ããããã®ãŸãŸã«ããŠãããŸããããç§èªèº«ã¯æãã€ããŸããã§ãããååãšããŠãèè
ãäœã念é ã«çœ®ããŠãããã¯æããã§ãã
ãªã¹ãã®ãžã§ãã¬ãŒã¿ãŒïŒããªã¹ãå
å
衚èšã-ããªã¹ãã®ç³ã¿èŸŒã¿ããšããŠ-泚éã翻蚳ïŒ
ãªã¹ããžã§ãã¬ãŒã¿ãŒïŒç¥ããŠãlistcompsãïŒã¯ã次ã®ãã¿ãŒã³ã®æ§æã·ã§ãŒãã«ããã§ãã
forããã³ifã¹ããŒãã¡ã³ãã䜿çšããåŸæ¥ã®æ¹æ³ïŒ
new_list = []<br/>
for item in a_list:<br/>
if condition(item):<br/>
new_list . append(fn(item))<br/>
ãªã¹ããžã§ãã¬ãŒã¿ãŒã®å ŽåïŒ
new_list = [fn(item) for item in a_list<br/>
if condition(item)]<br/>
ãªã¹ããžã§ãã¬ãŒã¿ãŒã¯æç¢ºã§ç°¡æœã§ãã ãªã¹ããžã§ãã¬ãŒã¿ãŒã§ã¯å€ãã®ãã¹ããããforæ¡ä»¶ãšifæ¡ä»¶ãå¿
èŠã«ãªãå ŽåããããŸããã2ã€ã3ã€ã®ã«ãŒãããŸãã¯ifæ¡ä»¶ã®ã»ããã«ã¯ããã¹ããããforã«ãŒãã䜿çšããããšããå§ãããŸãã Python Zenã«ãããšãããèªã¿ãããæ¹æ³ãéžæããããšããå§ãããŸãã
ããšãã°ã0ã9ã®æ°åã·ãªãŒãºã®æ£æ¹åœ¢ã®ãªã¹ãïŒ
>>> [n ** 2 for n in range ( 10 )]<br/>
[ 0, 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 ]<br/>
0ã9ã®å¥æ°ã®æ£æ¹åœ¢ã®ãªã¹ãïŒ
>>> [n ** 2 for n in range ( 10 ) if n % 2 ]<br/>
[ 1 , 9 , 25 , 49 , 81 ]<br/>
ãžã§ãã¬ãŒã¿åŒïŒ1ïŒ
æ°å€ã®äºä¹ãåèšããŠ100ã«ããŸãããã
ã«ãŒãå
ïŒ
total = 0
for num in range ( 1 , 101 ):<br/>
total += num * num <br/>
sum颿°ã䜿çšããŠãé©åãªã·ãŒã±ã³ã¹ããã°ããçµã¿ç«ãŠãããšãã§ããŸãã
ãªã¹ããžã§ãã¬ãŒã¿ãŒã®å ŽåïŒ
total = sum ([num * num for num in range ( 1 , 101 )])<br/>
ãžã§ãã¬ãŒã¿ãŒåŒã®å ŽåïŒ
total = sum (num * num for num in xrange( 1 , 101 ))<br/>
ãžã§ãã¬ãŒã¿åŒïŒãgenexpsãïŒã¯ãªã¹ããžã§ãã¬ãŒã¿ãšåããããç°¡åã§ããããªã¹ããžã§ãã¬ãŒã¿ã¯ã貪欲ãã§ããããžã§ãã¬ãŒã¿åŒã¯ãé
å»¶ãã§ãã ãªã¹ããžã§ãã¬ãŒã¿ãŒã¯ãçµæãªã¹ãå
šäœãäžåºŠã«èšç®ããŸãã åŒãžã§ãã¬ãŒã¿ãŒã¯ãå¿
èŠã«å¿ããŠããã¹ããšã«1ã€ã®å€ã®ã¿ãèšç®ããŸãã ããã¯ãèšç®ããããªã¹ããæçµçµæã§ã¯ãªããåãªãäžéã¹ãããã§ããé·ãã·ãŒã±ã³ã¹ã§ç¹ã«åœ¹ç«ã¡ãŸãã
ãã®å Žåãé¢å¿ãããã®ã¯åèšéé¡ã®ã¿ã§ãã äžéã®2ä¹ãªã¹ãã¯å¿
èŠãããŸããã åãçç±ã§xrangeã䜿çšããŸãïŒå埩ããšã«å€ãé
å»¶ããŠè¿ããŸãã
ãžã§ãã¬ãŒã¿åŒïŒ2ïŒ
ããšãã°ãæ°ååã®æ°ã®äºä¹ãèŠçŽãããšãã¡ã¢ãªäžè¶³ã«é¥ããåŒãžã§ãã¬ãŒã¿ã«ã¯ãã®ãããªåé¡ã¯ãããŸããã ããããããã«ãé¢ããããæéãããããŸãïŒ
total = sum (num * num<br/>
for num in xrange( 1 , 1000000000 ))<br/>
æ§æã®éãã¯ããªã¹ããžã§ãã¬ãŒã¿ãŒã¯è§ãã£ãã§å²ãŸããŠããŸããããžã§ãã¬ãŒã¿ãŒåŒã¯ããã§ã¯ãªãããšã§ãã ãžã§ãã¬ãŒã¿åŒã¯ãæ¬åŒ§ã§å²ãå¿
èŠãããå Žåããããããåžžã«äœ¿çšããå¿
èŠããããŸãã
åºæ¬çãªã«ãŒã«ïŒ
- èšç®ããããªã¹ããæãŸããçµæã§ããå Žåããªã¹ããžã§ãã¬ãŒã¿ã䜿çšããŸãã
- èšç®ãªã¹ããåãªãäžéã¹ãããã§ããå Žåã¯ããžã§ãã¬ãŒã¿ãŒåŒã䜿çšããŸãã
ããã¯æè¿ä»äºã§åºäŒã£ãäŸã§ãã
ïŒ
ïŒäœããã®çç±ã§ããµã³ãã«ã³ãŒãããããŸãã-çŽtranslãïŒå°æ¥ã®å¥çŽã®ããã«ãæ°åïŒæååãšæŽæ°ã®äž¡æ¹ïŒãšæã³ãŒããå«ãèŸæžãå¿
èŠã§ãã 1è¡ã®ã³ãŒãã§ååŸã§ããŸãã
ïŒ
ïŒäœããã®çç±ã§ããµã³ãã«ã³ãŒãããããŸãã-çŽtranslãïŒä»¥äžã¯ç§ãã¡ãå©ããã§ãããïŒ
- dictïŒïŒã¯ãããŒãšå€ã®ãã¢ã®ãªã¹ãïŒ2ã¿ãã«ïŒãåãå
¥ããŸãã
- æã³ãŒãã®ãªã¹ãããããŸãïŒåæã¯1æåã®æåã§ãšã³ã³ãŒããããæååãæåã®ãªã¹ãã§ãïŒã ãã®ãªã¹ãã®åæé¢æ°ã䜿çšããŠããã¹ãŠã®æã®çªå·ä»ãã³ãŒããååŸããŸãã
- æçªå·ã¯1ããå§ãŸããŸãããPythonã¯0ããã€ã³ããã¯ã¹ä»ããéå§ãããããæçªå·ã¯å¯Ÿå¿ããã€ã³ããã¯ã¹ããã1ã€å€ããªããŸãã
- è¡ãšçªå·ã§æãæ€çŽ¢ããå¿
èŠããããŸãã ãã®ããã«é¢æ°intïŒïŒãstrïŒïŒã䜿çšããã«ãŒãã§ããããå埩åŠçã§ããŸãã
æè¿ã®äŸïŒ
month_codes = dict ((fn(i + 1 ), code)<br/>
for i, code in enumerate ( 'FGHJKMNQUVXZ' )<br/>
for fn in ( int , str ))<br/>
month_codesã®çµæïŒ
{ 1 : 'F' , 2 : 'G' , 3 : 'H' , 4 : 'J' , ... <br/>
'1' : 'F' , '2' : 'G' , '3' : 'H' , '4' : 'J' , ... }<br/>
ä»åã
Pythonã§ã®ãªã¹ãã®äžŠã¹æ¿ãã¯ç°¡åã§ãã
a_list . sort()<br/>
ïŒãªã¹ãã®ãœãŒãã¯ããèªäœã§è¡ãããããšã«æ³šæããŠãã ãããå
ã®ãªã¹ãã¯ãœãŒãããããœãŒãã¡ãœãã
ã¯ãªã¹ããŸãã¯ãã®ã³ããŒã
è¿ããŸãã ïŒ
ããããäžŠã¹æ¿ããå¿
èŠãããããæšæºãšã¯ç°ãªãé åºã§ããŒã¿ã®ãªã¹ããããå ŽåïŒã€ãŸããæåã®åã§äžŠã¹æ¿ããŠããã2çªç®ã®åã§äžŠã¹æ¿ãããªã©ïŒã¯ã©ãã§ããããã æåã«2çªç®ã®åãæ¬¡ã«4çªç®ã®åã§ãœãŒãããå¿
èŠãããå ŽåããããŸãã
ç¹å¥ãªæ©èœãåããçµã¿èŸŒã¿ãœãŒããªã¹ãã¡ãœããã䜿çšã§ããŸãã
def custom_cmp (item1, item2):<br/>
return cmp ((item1[ 1 ], item1[ 3 ]),<br/>
(item2[ 1 ], item2[ 3 ]))<br/>
<br/>
a_list . sort(custom_cmp)<br/>
ããã¯æ©èœããŸããããªã¹ãã倧ãããšéåžžã«é
ããªããŸãã
DSUã§äžŠã¹æ¿ã*
DSU =ãã³ã¬ãŒã-ãœãŒã-ã¢ã³ãã³ã¬ãŒã
*泚ïŒå€ãã®å ŽåãDSUã¯ããã»ã©å¿
èŠã§ã¯ãããŸããã å¥ã®æ¹æ³ã®èª¬æã«ã€ããŠã¯ã次ã®ã»ã¯ã·ã§ã³ãããŒã«ããäžŠã¹æ¿ãããåç
§ããŠãã ããã
ç¹å¥ãªæ¯èŒé¢æ°ãäœæãã代ããã«ãéåžžã®ãœãŒããè¡ãè£å©ãªã¹ããäœæããŸãã
# Decorate: <br/>
to_sort = [(item[ 1 ], item[ 3 ], item)<br/>
for item in a_list]<br/>
<br/>
# Sort: <br/>
to_sort . sort()<br/>
<br/>
# Undecorate: <br/>
a_list = [item[ - 1 ] for item in to_sort]<br/>
æåã®è¡ã¯ãã¿ãã«ãå«ããªã¹ããäœæããŸããã¿ãã«ã¯ãç®çã®é åºã®ãœãŒãæ¡ä»¶ãšå®å
šãªããŒã¿ã¬ã³ãŒãïŒèŠçŽ ïŒã§æ§æãããŸãã
2è¡ç®ã¯ãåŸæ¥ã®ãœãŒããé«éãã€å¹ççã«å®è¡ããŸãã
3è¡ç®ã¯ããœãŒãããããªã¹ããã
æåŸã®å€ãååŸããŸãã
ãã®æåŸã®å€ã¯ãããŒã¿ã®èŠçŽ å
šäœïŒã¬ã³ãŒãããããã¯ïŒã§ããããšã«æ³šæããŠãã ããã äœæ¥ãè¡ããããœãŒãæ¡ä»¶ã¯ç Žæ£ããããããã¯ãã¯ãå¿
èŠãããŸããã
ããã«ããã䜿çšãããã¡ã¢ãªãã¢ã«ãŽãªãºã ã®è€éããããã³ã©ã³ã¿ã€ã ã®åŠ¥åç¹ãéæãããŸãã ã¯ããã«ç°¡åã§é«éã§ãããå
ã®ãªã¹ããè€è£œããå¿
èŠããããŸãã
ããŒãœãŒã
Python 2.4ã§ã¯ããœãŒããªã¹ãã¡ãœããã«ãªãã·ã§ã³ã®ãããŒãåŒæ°ãå°å
¥ãããŸããããã®åŒæ°ã¯ãåãªã¹ãé
ç®ã®æ¯èŒããŒãèšç®ããããã«äœ¿çšãããåäžã®åŒæ°ã®é¢æ°ãèšå®ããŸãã äŸïŒ
def my_key (item):<br/>
return (item[ 1 ], item[ 3 ])<br/>
<br/>
to_sort . sort(key = my_key)<br/>
my_key颿°ã¯ãto_sortãªã¹ãé
ç®ããšã«1ååŒã³åºãããŸãã
å¿
èŠã«å¿ããŠãç¬èªã®ããŒé¢æ°ãåéãããã1ã€ã®åŒæ°ã®æ¢åã®é¢æ°ã䜿çšã§ããŸãã
- str.lowerã¯ã倧æåãšå°æåãåºå¥ããã«ã¢ã«ãã¡ãããé ã«ãœãŒãããŸãã
- èŠçŽ ïŒè¡ãŸãã¯ã³ã³ããïŒã®é·ãã§ãœãŒãããlenã
- ã2ããã123ããã35ããªã©ã®æ°å€æååã®ããã«ãæ°å€ã®é åºã§ãœãŒãããã«ã¯ãintãŸãã¯floatã
çºé»æ©
åŒãžã§ãã¬ãŒã¿ãŒã¯ãã§ã«èŠãŸããã ä»»æã®è€éãªãžã§ãã¬ãŒã¿ãŒã颿°ãšããŠéçºã§ããŸãã
def my_range_generator (stop):<br/>
value = 0 <br/>
while value < stop:<br/>
yield value<br/>
value += 1 <br/>
<br/>
for i in my_range_generator( 10 ):<br/>
do_something(i)<br/>
yieldããŒã¯ãŒãã¯ã颿°ããžã§ãã¬ãŒã¿ãŒã«å€ããŸãã ãžã§ãã¬ãŒã¿ãŒé¢æ°ãåŒã³åºããšãã³ãŒããå®è¡ãã代ããã«ãPythonã¯ãžã§ãã¬ãŒã¿ãŒãªããžã§ã¯ããè¿ããŸããããã¯ãæãåºããšã€ãã¬ãŒã¿ãŒã§ãã 圌ã«ã¯æ¬¡ã®æ¹æ³ããããŸãã forã«ãŒãã¯ãStopIterationäŸå€ãã¹ããŒããããŸã§æ¬¡ã®å埩åã¡ãœãããåŒã³åºãã ãã§ãã äžèšã®ããã«ãStopIterationãæç€ºçãŸãã¯æé»çã«åŒã³åºããŠãã³ãŒãã®æåŸã§æããããšãã§ããŸãã
ç¹å®ã®ãªã¹ããã³ã³ãã€ã«ããå¿
èŠããªãããããžã§ãã¬ãŒã¿ãŒã¯ã·ãŒã±ã³ã¹/ã€ãã¬ãŒã¿ãŒåŠçãåçŽåã§ããŸãã å埩ããšã«èšç®ãããå€ã¯1ã€ã ãã§ãã
forã«ãŒããå®éã«ã©ã®ããã«æ©èœãããã説æããŸãã Pythonã¯inããŒã¯ãŒãã®åŸã®ã·ãŒã±ã³ã¹ã調ã¹ãŸãã ãªã¹ããã¿ãã«ãèŸæžãã»ããããŠãŒã¶ãŒå®çŸ©ãªã©ã®åçŽãªã³ã³ããã®å ŽåãPythonã¯ãããã€ãã¬ãŒã¿ã«å€æããŸãã ãã®ãªããžã§ã¯ããæ¢ã«å埩åã§ããå ŽåãPythonã¯ãããçŽæ¥äœ¿çšããŸãã
次ã«ãPythonã¯æ¬¡ã®å埩åã¡ãœãããç¹°ãè¿ãåŒã³åºããæ»ãå€ãã«ãŒãã«ãŠã³ã¿ãŒïŒãã®å Žåã¯iïŒã«ãã€ã³ãããã«ãŒãæ¬äœã³ãŒããå®è¡ããŸãã ãã®ããã»ã¹ã¯ãStopIterationäŸå€ãã¹ããŒãããããã«ãŒãã®æ¬äœã§breakã¹ããŒãã¡ã³ããå®è¡ããããŸã§ç¹°ãè¿ãç¹°ãè¿ãããŸãã
forã«ãŒãã«ã¯elseå¥ãå«ããããšãã§ããŸãïŒãã以å€ã®å ŽåïŒããã®ã³ãŒãã¯ãã«ãŒãã®çµäºåŸã«å®è¡ãããŸãããbreakã¹ããŒãã¡ã³ãã®å®è¡
åŸã«ã¯å®è¡ãã
ãŸãã ã ãã®æ©èœã¯éåžžã«ãšã¬ã¬ã³ããªãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã elseç¯ã¯ãforã«ãŒãã§åžžã«äœ¿çšããããšã¯éãããé »ç¹ã«äœ¿çšãããããã§ã¯ãããŸãããã圹ã«ç«ã€å ŽåããããŸãã å Žåã«ãã£ãŠã¯ãå¿
èŠãªããžãã¯ãããŸã衚çŸã§ããŸãã
ããšãã°ãããèŠçŽ ã«å«ãŸããæ¡ä»¶ã確èªããå¿
èŠãããå Žåãã·ãŒã±ã³ã¹ã®èŠçŽ ã¯æ¬¡ã®ããã«ãªããŸãã
for item in sequence:<br/>
if condition(item):<br/>
break <br/>
else :<br/>
raise Exception ( 'Condition not satisfied.' )<br/>
ãžã§ãã¬ãŒã¿ãŒã®äŸ
CSVãã¡ã€ã«ïŒãŸãã¯ãªã¹ãã®ã¢ã€ãã ïŒãã空ã®è¡ãé€å€ããŸãã
def filter_rows (row_iterator):<br/>
for row in row_iterator:<br/>
if row:<br/>
yield row<br/>
<br/>
data_file = open (path, 'rb' )<br/>
irows = filter_rows(csv . reader(data_file))<br/>
ããã¹ããã¡ã€ã«ããè¡ãèªã¿åã
datafile = open ( 'datafile' )<br/>
for line in datafile:<br/>
do_something(line)<br/>
ä»ã®ã€ãã¬ãŒã¿ãè¡ãããã«ããã¡ã€ã«ã¯æ¬¡ã®ã¡ãœããããµããŒããããããããã¯å¯èœã§ãïŒãªã¹ããã¿ãã«ãèŸæžïŒããŒçšïŒã
ãžã§ãã¬ãŒã¿ãŒã
ããã§æ³šæããŠãã ããïŒãã¡ã€ã«æäœã®ãããã¡ãªã³ã°ã®ãããPython 2.5+ã䜿çšããŠããªãå Žåã.nextã¡ãœãããš.read *ã¡ãœãããæ··åšãããããšã¯ã§ããŸããã
EAFP察 LBYL
èš±å¯ãããèš±ããæ±ããæ¹ãç°¡åã§ãã ïŒèš±å¯ãããèš±ããæ±ããæ¹ãç°¡åã§ãïŒ
7åæž¬å®ãã1ã€åããŸãã ïŒè·³èºããåã«èŠãŠãã ããïŒ
EAFPãé垞奜ãŸããŸãããåžžã«ã§ã¯ãããŸããã
- ããã¯ã¿ã€ãã³ã°
ãããã¢ãã«ã®ããã«æ©ããã¢ãã«ã®ããã«é³Žããã¢ãã«ã®ããã«èŠããå Žåãããã¯ã¢ãã«ã§ãã ïŒã¬ãã§ãŠïŒååã«è¿ããïŒ
- äŸå€
ãªããžã§ã¯ããç¹å®ã®ã¿ã€ãã§ããå¿
èŠãããå Žåã¯ãæç€ºçãªã¬ã€ãã³ã¹ã䜿çšããŠãã ããã ã³ãŒããæ©èœããããã«xãæååã§ãªããã°ãªããªãå Žåããªã宣èšããªãã®ã§ããïŒ
str (x)<br/>
ã©ã³ãã ã«è©Šã代ããã«ã次ã®ãããªãã®ã䜿çšããŸãã
isinstance (x, str )<br/>
EAFP try /äŸãé€ããŠ
äŸå€ãèµ·ãããããã³ãŒããtry / exceptãããã¯ã«å
¥ããŠãšã©ãŒããã£ãããããšããã¹ãŠã®ãªãã·ã§ã³ãæäŸããããšããå Žåãããäžè¬çãªè§£æ±ºçã«ãªãå¯èœæ§ããããŸãã
try :<br/>
return str (x)<br/>
except TypeError :<br/>
... <br/>
泚ïŒãã£ããããå¿
èŠã®ããäŸå€ãåžžã«ç¹å®ããå¿
èŠããããŸãã çŽç²ãªexceptç¯ã䜿çšããªãã§ãã ããã çŽç²ãªäŸå€æ¡ä»¶ã¯ãã³ãŒãã§çºçãããã¹ãŠã®äŸå€ããã£ãããããããã°ãéåžžã«å°é£ã«ããŸãã
ã€ã³ããŒã
from module import * <br/>
ã¢ãžã¥ãŒã«ã€ã³ããŒãåŒã§ãã®ãã¯ã€ã«ãã«ãŒããïŒã¯ã€ã«ãã«ãŒãããã³ãã¬ãŒãïŒãèŠãããšãããã§ãããã ããããããªãã圌女ã奜ãã§ãã
䜿çšããªãã§ãã ãããæåãªå¯Ÿè©±ã®é©å¿ïŒ
ïŒå€åŽã®ããŽãããžã£ã³ã°ã«ã沌å°ãé§ãïŒ
ãããïŒã¢ãžã¥ãŒã«ã®ã€ã³ããŒããã*æç€ºçãªã€ã³ããŒããããåªããŠããŸããïŒ
äŸç°ïŒè¯ããªãã§ãã ããéããããç°¡åã«ãããé
æçã«ã
ã«ãŒã¯ïŒããããæç€ºçãªã€ã³ããŒãã®æ¹ãã¯ã€ã«ãã«ãŒããããåªããŠããããšãã©ããã£ãŠç¥ãã®ã§ããïŒ
äŸç°ïŒå幎åŸã«è©ŠããŠã³ãŒããèªã¿ãããšããèŠã€ããŸãã
ïŒå¿µã®ãããå
ã®ããã¹ããåŒçšããŸã-泚ã翻蚳ãïŒïŒããŽãã®å€è£
ããžã£ã³ã°ã«ã沌å°ããã¹ããïŒ
LUKEïŒã¢ãžã¥ãŒã«ããã®ã€ã³ããŒãã¯ãæç€ºçãªã€ã³ããŒããããåªããŠããŸããïŒ
äŸç°ïŒããããè¯ããããŸããã ããéããããç°¡åã«ãããé
æçã«ã
LUKEïŒãããããªãæç€ºçãªã€ã³ããŒãã®æ¹ãåªããŠããã®ããã©ã®ããã«ããŠç¥ãããšãã§ããŸãã
ã¯ã€ã«ãã«ãŒã圢åŒïŒ
äŸç°ïŒã³ãŒãã6ãæéèªãããšãããšã
ä»ããã
ã¯ã€ã«ãã«ãŒãã®ã€ã³ããŒã-Pythonã®ããŒã¯ãµã€ãã
絶察ã«ïŒã¢ãžã¥ãŒã«ã®ã€ã³ããŒããã*åå空éãã²ã©ãæ±æããŸãã ããŒã«ã«ããŒã ã¹ããŒã¹ã«ãåä¿¡ããäºå®ã®ãªããªããžã§ã¯ãããããŸãã ã¢ãžã¥ãŒã«ã§ä»¥åã«å®çŸ©ãããããŒã«ã«ã®ååããªãŒããŒã©ã€ãããååã確èªã§ããŸãã ãããã®ååã®ç±æ¥ãæ£ç¢ºã«ææ¡ããããšã¯ã§ããŸããã ãã®åœ¢åŒã¯çãã·ã³ãã«ã§ãããæçµçãªã³ãŒãã«ã¯å±ããŠããŸããã
é埳ïŒ
ã¯ã€ã«ãã«ãŒãã§ã€ã³ããŒãã䜿çšããªãã§ãã ããïŒã¯ããã«è¯ãïŒ
- ã¢ãžã¥ãŒã«ãä»ããååã®ãã€ã³ãïŒèå¥åã®å®å
šãªèª¬æãèµ·æºã瀺ãïŒã
- ççž®åïŒãšã€ãªã¢ã¹ããšã€ãªã¢ã¹ïŒã«ããé·ãã¢ãžã¥ãŒã«åã®ã€ã³ããŒãã
- ãŸãã¯ãå¿
èŠãªååãæ£ç¢ºã«æç€ºçã«ã€ã³ããŒãããŸãã
ååç©ºéæ±æã¢ã©ãŒã ïŒ
代ããã«ã
ã¢ãžã¥ãŒã«ãä»ããŠååããã€ã³ãããŸãïŒè©³çްã説æããèå¥åãèµ·æºã瀺ããŸãïŒïŒ
import module <br/>
module . name<br/>
ãŸãã¯ããšã€ãªã¢ã¹ã䜿çšããŠé·ãã¢ãžã¥ãŒã«åãã€ã³ããŒãããŸãã
import long_module_name as mod <br/>
mod . name<br/>
ãŸãã¯ãå¿
èŠãªååã®ã¿ãæç€ºçã«ã€ã³ããŒãããŸãã
from module import name<br/>
name<br/>
ãã®ãã©ãŒã ã¯ãã¢ãžã¥ãŒã«ã®ç·šéãšåèªã¿èŸŒã¿ïŒ "reloadïŒïŒ"ïŒãå¿
èŠãªå¯Ÿè©±åã€ã³ã¿ãŒããªã¿ãŒã§ã®äœ¿çšã«ã¯é©ããŠããŸããã
ã¢ãžã¥ãŒã«ãšã¹ã¯ãªãã
ã€ã³ããŒããããã¢ãžã¥ãŒã«ãšå®è¡å¯èœã¹ã¯ãªããã®äž¡æ¹ãäœæããã«ã¯ïŒ
if __name__ == '__main__' :<br/>
# script code here <br/>
ã€ã³ããŒããããšã__ name__ã¢ãžã¥ãŒã«å±æ§ãæ¡åŒµåã.pyããªãã®ãã¡ã€ã«åãšããŠèšå®ãããŸãã ãããã£ãŠãã¢ãžã¥ãŒã«ãã€ã³ããŒãããããšãifæ¡ä»¶ã®äžã®ã³ãŒãã¯æ©èœããŸããã ã¹ã¯ãªãããå®è¡ãããšã__ name__屿§ã "__main__"ã«èšå®ãããã¹ã¯ãªããã³ãŒã
ãæ©èœããŸãã
ããã€ãã®ç¹å¥ãªå Žåãé€ãããã¹ãŠã®ã³ãŒããæäžäœã«çœ®ãã¹ãã§ã¯ãããŸããã 颿°ãã¯ã©ã¹ãã¡ãœããã®ã³ãŒããé衚瀺ã«ãã__ name__ == '__main__'ã®å Žåã¯ã³ãŒããéããŸãã
ã¢ãžã¥ãŒã«æ§é
"""module docstring""" <br/>
<br/>
# imports <br/>
# constants <br/>
# exception classes <br/>
# interface functions <br/>
# classes <br/>
# internal functions & classes <br/>
<br/>
def main ( ... ):<br/>
... <br/>
<br/>
if __name__ == '__main__' :<br/>
status = main()<br/>
sys . exit(status)<br/>
ãããã¢ãžã¥ãŒã«ã®æ§é ã§ãã
ã³ãã³ãã©ã€ã³åŠç
äŸïŒcmdline.pyïŒ
#!/usr/bin/env python <br/>
<br/>
"""<br/>
Module docstring.<br/>
""" <br/>
<br/>
import sys <br/>
import optparse <br/>
<br/>
def process_command_line (argv):<br/>
"""<br/>
Return a 2-tuple: (settings object, args list).<br/>
`argv` is a list of arguments, or `None` for ``sys.argv[1:]``.<br/>
""" <br/>
if argv is None :<br/>
argv = sys . argv[ 1 :]<br/>
<br/>
# initialize the parser object: <br/>
parser = optparse . OptionParser(<br/>
formatter = optparse . TitledHelpFormatter(width = 78 ),<br/>
add_help_option = None )<br/>
<br/>
# define options here: <br/>
parser . add_option( # customized description; put --help last <br/>
'-h' , '--help' , action = 'help' ,<br/>
help = 'Show this help message and exit.' )<br/>
<br/>
settings, args = parser . parse_args(argv)<br/>
<br/>
# check number of arguments, verify values, etc.: <br/>
if args:<br/>
parser . error( 'program takes no command-line arguments; ' <br/>
'"%s" ignored.' % (args,))<br/>
<br/>
# further process settings & args if necessary <br/>
<br/>
return settings, args<br/>
<br/>
def main (argv = None ):<br/>
settings, args = process_command_line(argv)<br/>
# application code here, like: <br/>
# run(settings, args) <br/>
return 0 # success <br/>
<br/>
if __name__ == '__main__' :<br/>
status = main()<br/>
sys . exit(status)<br/>
ããã±ãŒãž
package / <br/>
__init__ . py<br/>
module1 . py<br/>
subpackage / <br/>
__init__ . py<br/>
module2 . py<br/>
- ãããžã§ã¯ããæŽçããããã«äœ¿çšããŸãã
- ããŒãæã«ãã¹ãèŠã€ããã³ã¹ããåæžããŸãã
- ååã®ã€ã³ããŒãã®ç«¶åãæžãããŸãã
äŸïŒ
import package.module1 <br/>
from package.subpackage import module2<br/>
from package.subpackage.module2 import name<br/>
Python 2.5ã§ã¯ãå°æ¥ã®ã€ã³ããŒããéããŠçµ¶å¯Ÿããã³çžå¯Ÿã€ã³ããŒããå¯èœã«ãªããŸããã
from __future__ import absolute_import<br/>
ãŸã ååã«çè§£ã§ããŠããªãã®ã§ããã®éšåã®èª¬æã¯çç¥ããŸãã
åçŽãªãã®ã¯è€éãªãã®ãããåªããŠãã
ãŸãããããã°ã¯ã³ãŒããæžãããã2åé£ãããªããŸãã ãããã£ãŠãå¯èœãªéãã¹ããŒãã«ã³ãŒããèšè¿°ããå Žåãå®çŸ©äžããããã°ããã®ã«ååãªã»ã©ã¹ããŒãã§ã¯ãããŸããã
âãã©ã€ã¢ã³W.ã«ãŒããã³ã Cããã°ã©ãã³ã°èšèªãšãAWKãã®ãKãã®å
±èè
èšãæããã°ãããã°ã©ã ãã·ã³ãã«ã«ããŠãã ããïŒ
è»èŒªãåçºæããªãã§ãã ãã
ã³ãŒããæžãåã«ïŒ
- æšæºã®Pythonã©ã€ãã©ãªãã芧ãã ããã
- Pythonããã±ãŒãžã€ã³ããã¯ã¹ïŒãããŒãºã·ã§ãããïŒ http://cheeseshop.python.org/pypiãã芧ãã ããã
ïŒã©ããããããŒãºã·ã§ããã®ã¹ã±ããã®ãã³ãã Wiki-textbookã§åæ§ã®ããšãããããŸãã-泚ãTranslãïŒ
- ããããæ€çŽ¢ããŸãã Googleã¯ããªãã®åéã§ãã
åç
§è³æ
ãã®èšäºã¯
Habra Editorã§äœæãããã³ãŒããµã³ãã«ã¯ããã©ã«ãã¹ã¿ã€ã«ã®
Habra-colorerã§ãã€ã³ããããŠããŸãã