
ãã€ãããã«ïŒ
ä»æ¥ãç§ã¯ç§ã®æããhabrasocietyã«ç§ã®æåã®habraã®ç¿»èš³ã玹ä»ããããšæããŸãã Pythonã§ã®ããã°ã©ãã³ã°ã¯æã®ãããªãã®ã§ãã ãã ããã³ãŒããèªã¿ãããç解ããããå Žåã¯ããã«åªããŠããŸããã€ãŸããéåžžã®å¶äœãããå°ãè©©çã§ãã ãœãŒã¹ã³ãŒãã®èšè¿°ãšèšèšã«é¢ããŠã誰ãç¬èªã®ã«ãŒã«ãšç¬èªã®ã¹ãã¬ãªã¿ã€ããæã£ãŠããŸããã ãã©ãŒã©ã ã®ã·ãŒã«ãã«é¢ããå€ãã®ã³ããŒãå£ããŠããŸããããšã«ãããæš©åšãã仲éã®æèŠãç¡èŠããããšã¯ã§ããŸããã ããã§ãGoogleã®Pythonçšã¹ã¿ã€ã«ã¬ã€ãã®æåã®éšåã®ç¿»èš³ãæ瀺ãããŸãã 圌ã¯ã³ãŒãã®èšè¿°ã®ååã«ç¹ã«å¯ŸåŠããŸãïŒ 2çªç®ã®éšåãéããªãç»å ŽããŸããããœãŒã¹ã³ãŒãã®ãã©ãŒãããã«å°å¿µããŸãïŒã ããã«èŠåããŸãã誰ããé·ãéç¥ã£ãŠããå€ãã®ïŒã»ãšãã©ã§ã¯ãªãã«ããŠãïŒå ±éã®çå®ããããŸãã ããããããã§äœãæ°ãããã®ãèŠã€ããããããå°ãªããšãå€ããã®ãæãåºããããšãå¿ããé¡ã£ãŠããŸãã ã«ããã®äžã«å ¥ããŸãããã ãããŠã pdfã¯ããããã«ãããŸãã
Google Pythonã¹ã¿ã€ã«ã¬ã€ã
ããŒãžã§ã³ïŒ 2.48
èè ïŒ ã¢ãããã»ããã« ã ã¢ã³ãã¯ãŒãã»ãã«ãŒã« ã ãŠãŒãžã³ã»ãžã§ã³ ã ãžã§ã¬ããŒã»ãã«ãã³ ã ãããã»ã¹ããŒã ã ãã€ã¯ã»ã·ãŒã«ãº ã
æºåãã
Pythonã¯ãGoogleã䜿çšããäž»èŠãªã¹ã¯ãªããèšèªã§ãã ãã®ã¬ã€ãã¯ãPythonã§æžãããããã°ã©ã ã®ãè¯ãããšãæªããã®ãªã¹ãã§ãã ã³ãŒããæ£ãããã©ãŒãããããããã«ãVimãšãã£ã¿ãŒã®èšå®ãã¡ã€ã«ãäœæããŸãã ã Emacsã§ã¯ããã®ç®çã®ããã«ããã©ã«ãèšå®ã䜿çšããå¿ èŠããããŸãã
Pythonããã°ã©ãã³ã°ã®ãã³ã
ãã€ãã§ãã«ãŒ
PyCheckerã䜿çšããŠã³ãŒãããã¹ããã
PyCheckerã¯ãPythonããã°ã©ã ã®ãœãŒã¹ã³ãŒãã®ãã°ãèŠã€ããããã®ããŒã«ã§ãã 圌ã¯ãCãC ++ãªã©ã®ããŸãåçã§ã¯ãªãèšèªã®ã³ã³ãã€ã©ãŒã«ãã£ãŠèå¥ãããåé¡ãèŠã€ããŸãã ããã¯éåžžã«é åçã§ãã Pythonã®åçãªæ§è³ªã«ãããäžéšã®èŠåã¯å ¬å¹³ã§ã¯ãªããããããŸãããã誀ã£ãèŠåãé »ç¹ã«çºçããããšã¯ãããŸããã
åãšã©ãŒãªã©ãæ€åºãã«ãããšã©ãŒããã£ããããå€æ°ã宣èšããåã«äœ¿çšããŸãã
PyCheckerã¯å®ç§ã§ã¯ãããŸããã ãã¹ãŠã®å©ç¹ãåŸãããã«å¿ èŠãªãã®ïŒ
å¿ ãã³ãŒãã§PyCheckerãå®è¡ããŠãã ããã PyCheckerã®èµ·åæ¹æ³ãåŠã¶ã«ã¯ããã®ããŒã ããŒãžãã芧ãã ãã ã èŠåãæå¶ããã«ã¯ããã®ã¢ãžã¥ãŒã«ã§__pychecker__å€æ°ãäœæããã©ã®ãšã©ãŒãæå¶ããå¿ èŠããããã瀺ãå¿ èŠããããŸãã äŸïŒ
ãã®æ¹æ³ã§èŠåãæå¶ããããšã«ã¯ã次ã®èšç»ã®å©ç¹ããããŸããæå¶ãç°¡åã«æ€çŽ¢ããŠããããã«æ»ãããšãã§ããŸãã 次ã®ããã«å ¥åããŠãPyCheckerã®èŠåã®ãªã¹ãã衚瀺ã§ããŸãã
æªäœ¿çšã®åŒæ°ã¯ãæªäœ¿çšã®åŒæ°ã®ååãšããŠã_ãã䜿çšããããåŒæ°ãunused_ãã®ãã¬ãã£ãã¯ã¹ãšããŠäœ¿çšããŠçç¥ã§ããŸãã åŒæ°åãå€æŽã§ããªãç¶æ³ã§ã¯ãé¢æ°ã®åé ã§ãããã«èšåããããšãã§ããŸãã äŸïŒ
çæ³çã«ã¯ããæªäœ¿çšã®åºåããå®éã«ãããã§ãããšèªä¿¡ãæã£ãŠè¿°ã¹ãããšãã§ããããã«ãPyCheckerãæ¹è¯ãããŸãã
å®çŸ©
PyCheckerã¯ãPythonããã°ã©ã ã®ãœãŒã¹ã³ãŒãã®ãã°ãèŠã€ããããã®ããŒã«ã§ãã 圌ã¯ãCãC ++ãªã©ã®ããŸãåçã§ã¯ãªãèšèªã®ã³ã³ãã€ã©ãŒã«ãã£ãŠèå¥ãããåé¡ãèŠã€ããŸãã ããã¯éåžžã«é åçã§ãã Pythonã®åçãªæ§è³ªã«ãããäžéšã®èŠåã¯å ¬å¹³ã§ã¯ãªããããããŸãããã誀ã£ãèŠåãé »ç¹ã«çºçããããšã¯ãããŸããã
é·æ
åãšã©ãŒãªã©ãæ€åºãã«ãããšã©ãŒããã£ããããå€æ°ã宣èšããåã«äœ¿çšããŸãã
çæ
PyCheckerã¯å®ç§ã§ã¯ãããŸããã ãã¹ãŠã®å©ç¹ãåŸãããã«å¿ èŠãªãã®ïŒ
- 圌ã«ç®ãåããŠæžã
- 圌ã®èŠåãæå¶ãã
- ãã°ä¿®æ£
- ãŸãã¯ããããç¡èŠããŸã
解決ç
å¿ ãã³ãŒãã§PyCheckerãå®è¡ããŠãã ããã PyCheckerã®èµ·åæ¹æ³ãåŠã¶ã«ã¯ããã®ããŒã ããŒãžãã芧ãã ãã ã èŠåãæå¶ããã«ã¯ããã®ã¢ãžã¥ãŒã«ã§__pychecker__å€æ°ãäœæããã©ã®ãšã©ãŒãæå¶ããå¿ èŠããããã瀺ãå¿ èŠããããŸãã äŸïŒ
__pychecker__ = 'no-callinit no-classattr'
ãã®æ¹æ³ã§èŠåãæå¶ããããšã«ã¯ã次ã®èšç»ã®å©ç¹ããããŸããæå¶ãç°¡åã«æ€çŽ¢ããŠããããã«æ»ãããšãã§ããŸãã 次ã®ããã«å ¥åããŠãPyCheckerã®èŠåã®ãªã¹ãã衚瀺ã§ããŸãã
pychecker -- help
æªäœ¿çšã®åŒæ°ã¯ãæªäœ¿çšã®åŒæ°ã®ååãšããŠã_ãã䜿çšããããåŒæ°ãunused_ãã®ãã¬ãã£ãã¯ã¹ãšããŠäœ¿çšããŠçç¥ã§ããŸãã åŒæ°åãå€æŽã§ããªãç¶æ³ã§ã¯ãé¢æ°ã®åé ã§ãããã«èšåããããšãã§ããŸãã äŸïŒ
def foo(a, unused_b, unused_c, d=None, e=None): _ = d, e return a
çæ³çã«ã¯ããæªäœ¿çšã®åºåããå®éã«ãããã§ãããšèªä¿¡ãæã£ãŠè¿°ã¹ãããšãã§ããããã«ãPyCheckerãæ¹è¯ãããŸãã
èŒžå ¥å
ããã±ãŒãžãšã¢ãžã¥ãŒã«ã®ã¿ãã€ã³ããŒããã
ã¢ãžã¥ãŒã«éã§ãªãŒãã³ãœãŒã¹ã³ãŒããåå©çšããããã®ã¡ã«ããºã ã
åå空éã®èŠåã¯éåžžã«åçŽã§ãã ã³ãŒãå ã®åãªããžã§ã¯ãã®å Žæã¯ãåäžã®æ¹æ³ã§ç€ºãããŸãã x.Objã¯ããªããžã§ã¯ãObjãã¢ãžã¥ãŒã«xã§å®£èšãããŠãããšèšããŸãã
ã¢ãžã¥ãŒã«åã競åããå ŽåããããŸãã äžéšã®ã¢ãžã¥ãŒã«åã¯äžå¿«ãªã»ã©é·ãå ŽåããããŸãã
import xã䜿çšããŠãããã±ãŒãžãšã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸãã
xãããã±ãŒãžãã¬ãã£ãã¯ã¹ã§ã yããã¬ãã£ãã¯ã¹ãªãã®ã¢ãžã¥ãŒã«åã§ããå Žåãfrom x import yã䜿çšããŸãã
2ã€ã®ã¢ãžã¥ãŒã«ã®ååãyã®å ŽåããŸãã¯ã¢ãžã¥ãŒã«åãäžå¿«ãªã»ã©é·ãå Žåã¯ã from x import yãzãšããŠäœ¿çšããŸãã
ããšãã°ãsound.effects.echoã¢ãžã¥ãŒã«ã¯æ¬¡ã®ããã«ã€ã³ããŒãã§ããŸãã
ã¢ãžã¥ãŒã«ãåãããã±ãŒãžã«ããå Žåã§ããã€ã³ããŒãã§çžå¯Ÿåã䜿çšããªãã§ãã ããã å®å šãªããã±ãŒãžåã®ã¿ã䜿çšããŠãã ããã ããã«ãããåãããã±ãŒãžã2åã€ã³ããŒããããç¶æ³ãé²ãããšãã§ããŸãã
å®çŸ©
ã¢ãžã¥ãŒã«éã§ãªãŒãã³ãœãŒã¹ã³ãŒããåå©çšããããã®ã¡ã«ããºã ã
é·æ
åå空éã®èŠåã¯éåžžã«åçŽã§ãã ã³ãŒãå ã®åãªããžã§ã¯ãã®å Žæã¯ãåäžã®æ¹æ³ã§ç€ºãããŸãã x.Objã¯ããªããžã§ã¯ãObjãã¢ãžã¥ãŒã«xã§å®£èšãããŠãããšèšããŸãã
çæ
ã¢ãžã¥ãŒã«åã競åããå ŽåããããŸãã äžéšã®ã¢ãžã¥ãŒã«åã¯äžå¿«ãªã»ã©é·ãå ŽåããããŸãã
解決ç
import xã䜿çšããŠãããã±ãŒãžãšã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸãã
xãããã±ãŒãžãã¬ãã£ãã¯ã¹ã§ã yããã¬ãã£ãã¯ã¹ãªãã®ã¢ãžã¥ãŒã«åã§ããå Žåãfrom x import yã䜿çšããŸãã
2ã€ã®ã¢ãžã¥ãŒã«ã®ååãyã®å ŽåããŸãã¯ã¢ãžã¥ãŒã«åãäžå¿«ãªã»ã©é·ãå Žåã¯ã from x import yãzãšããŠäœ¿çšããŸãã
ããšãã°ãsound.effects.echoã¢ãžã¥ãŒã«ã¯æ¬¡ã®ããã«ã€ã³ããŒãã§ããŸãã
from sound.effects import echo ... echo.EchoFilter(input, output, delay=0.7, atten=4)
ã¢ãžã¥ãŒã«ãåãããã±ãŒãžã«ããå Žåã§ããã€ã³ããŒãã§çžå¯Ÿåã䜿çšããªãã§ãã ããã å®å šãªããã±ãŒãžåã®ã¿ã䜿çšããŠãã ããã ããã«ãããåãããã±ãŒãžã2åã€ã³ããŒããããç¶æ³ãé²ãããšãã§ããŸãã
ããã±ãŒãž
ãã«ãã¹ã䜿çšããŠåã¢ãžã¥ãŒã«ãã€ã³ããŒããã
ã¢ãžã¥ãŒã«åã®ç«¶åã¯åé¿ãããŸãã ãã£ã¹ã¯äžã®ã¢ãžã¥ãŒã«ãèŠã€ããã®ãç°¡åã«ãªã£ãŠããŸãã
ã³ãŒãã移æ€ããã®ãé£ãããªããŸã ã¢ãžã¥ãŒã«ã®å®å šãªéå±€ãå®å šã«åäœæããå¿ èŠããããŸãã
æ°ããã³ãŒãã¯ãã¹ãŠãããã±ãŒãžå ã®ãã«ãã¹ã§åã¢ãžã¥ãŒã«ãã€ã³ããŒãããå¿ èŠããããŸãã
ã€ã³ããŒãã¯æ¬¡ã®ããã«ãªããŸãã
é·æ
ã¢ãžã¥ãŒã«åã®ç«¶åã¯åé¿ãããŸãã ãã£ã¹ã¯äžã®ã¢ãžã¥ãŒã«ãèŠã€ããã®ãç°¡åã«ãªã£ãŠããŸãã
çæ
ã³ãŒãã移æ€ããã®ãé£ãããªããŸã ã¢ãžã¥ãŒã«ã®å®å šãªéå±€ãå®å šã«åäœæããå¿ èŠããããŸãã
解決ç
æ°ããã³ãŒãã¯ãã¹ãŠãããã±ãŒãžå ã®ãã«ãã¹ã§åã¢ãžã¥ãŒã«ãã€ã³ããŒãããå¿ èŠããããŸãã
ã€ã³ããŒãã¯æ¬¡ã®ããã«ãªããŸãã
# import sound.effects.echo # () from sound.effects import echo
äŸå€
äŸå€ã¯èš±å¯ãããŸããã泚æããŠäœ¿çšããå¿
èŠããããŸã
äŸå€ã¯ãã³ãŒããããã¯ã®éåžžã®å¶åŸ¡ãããŒãçµäºããŠããšã©ãŒãŸãã¯ãã®ä»ã®äŸå€æ¡ä»¶ãåŠçããæ段ã§ãã
éåžžã®ã³ãŒãã®å¶åŸ¡ãããŒã¯ããšã©ãŒãã©ããã³ãŒããšæ··ããåããŸããã ãŸããç¹å®ã®æ¡ä»¶ãæºãããããšãã¹ã¬ããã¯ç¹å®ã®ãã¬ãŒã æ°ãã¹ãããã§ããŸããããšãã°ãè€æ°ã®ãšã©ãŒã³ãŒãåŠçã®ä»£ããã«ãNãã¹ããããé¢æ°ãã1ã¹ãããã§æ»ããŸãã
å¶åŸ¡ãããŒã誀ã£ãŠå®è¡ãããå¯èœæ§ããããŸãã ã©ã€ãã©ãªããé¢æ°ãåŒã³åºããšãã«ãšã©ãŒãçºçããç¶æ³ãã¹ãããããã®ã¯éåžžã«ç°¡åã§ãã
äŸå€åŠçã¯æ¬¡ã®äœçœ®ã«åŸãå¿ èŠããããŸãã
å®çŸ©
äŸå€ã¯ãã³ãŒããããã¯ã®éåžžã®å¶åŸ¡ãããŒãçµäºããŠããšã©ãŒãŸãã¯ãã®ä»ã®äŸå€æ¡ä»¶ãåŠçããæ段ã§ãã
é·æ
éåžžã®ã³ãŒãã®å¶åŸ¡ãããŒã¯ããšã©ãŒãã©ããã³ãŒããšæ··ããåããŸããã ãŸããç¹å®ã®æ¡ä»¶ãæºãããããšãã¹ã¬ããã¯ç¹å®ã®ãã¬ãŒã æ°ãã¹ãããã§ããŸããããšãã°ãè€æ°ã®ãšã©ãŒã³ãŒãåŠçã®ä»£ããã«ãNãã¹ããããé¢æ°ãã1ã¹ãããã§æ»ããŸãã
çæ
å¶åŸ¡ãããŒã誀ã£ãŠå®è¡ãããå¯èœæ§ããããŸãã ã©ã€ãã©ãªããé¢æ°ãåŒã³åºããšãã«ãšã©ãŒãçºçããç¶æ³ãã¹ãããããã®ã¯éåžžã«ç°¡åã§ãã
解決ç
äŸå€åŠçã¯æ¬¡ã®äœçœ®ã«åŸãå¿ èŠããããŸãã
- ãã®ããã«äŸå€ãçºçãããŸãïŒ MyExceptionïŒ 'ãšã©ãŒã¡ãã»ãŒãž'ïŒ ãçºçãããããMyExceptionãçºçãããŸãã 2ã€ã®åŒæ°ãæã€æžã蟌ã¿ãã©ãŒã ã䜿çšããªãã§ãã ããïŒ MyExceptionã 'Error message'ãçºçãããŸã ïŒããŸããæžã蟌ã¿ã®æååãã©ãŒã ã䜿çšããŸããïŒ 'Error message'ãçºçãããŸã ïŒã
- ã¢ãžã¥ãŒã«ïŒãŸãã¯ããã±ãŒãžïŒã¯ãç¬èªã®ãªããžã§ã¯ãæåã®äŸå€ã¯ã©ã¹ãå®çŸ©ããå¿
èŠããããçµã¿èŸŒã¿ã®äŸå€ã¯ã©ã¹ããç¶æ¿ããå¿
èŠããããŸãã
ã¢ãžã¥ãŒã«ã®äž»ãªäŸå€ã¯ãšã©ãŒãšåŒã°ããã¹ãã§ãã
class Error(Exception): pass
- åŸã§é床ã«è奮ãããªãå ŽåããŸãã¯ã¹ã¬ããã®å€éšã³ãŒããããã¯ã«ããªãå ŽåïŒããã³ãšã©ãŒã¡ãã»ãŒãžãåºåãããå ŽåïŒã«ã®ã¿ããã¹ãŠã®äŸå€ããã£ããããäŸå€ã䜿çšããªãã§ãã ããã ãã®ç¹ã§Pytnonã¯éåžžã«å¯å®¹ã§ããããã«ãååä»ããšã©ãŒã sys.exitïŒïŒã®åŒã³åºãã Ctrl + Cã®äžæããã¹ãã®å€±æãããã³åã«ãã£ããããããªãããŸããŸãªçš®é¡ã®äŸå€ããã£ããã§ããŸãã
- try / exceptãããã¯ã®ã³ãŒãã®éãæžãããŸãã tryãããã¯ã®æ¬äœã倧ããã»ã©ãäŸå€ãã¹ããŒããããšã¯æããªãã³ãŒãè¡ã§äŸå€ãçºçããå¯èœæ§ãé«ããªããŸãã ãããã®å Žåã try / exceptãããã¯ã¯å®éã®ãšã©ãŒãé ããŸãã
- finallyãããã¯ãã¹ã©ã€ãããŠã tryãããã¯ã§äŸå€ãã¹ããŒããããã©ããã«é¢ä¿ãªãã³ãŒããå®è¡ããŸãã ããã¯ããã¡ã€ã«ãéãããªã©ã®æçµã¢ã¯ã·ã§ã³ã«åœ¹ç«ã€ããšããããããŸãã
- äŸå€ããã£ãããããšãã¯ãã³ã³ããããasã䜿çšããããšããå§ãããŸãã
try: raise Error except Error as error: pass
ã°ããŒãã«å€æ°
ã°ããŒãã«å€æ°ã®äœ¿çšãé¿ãã
ã¢ãžã¥ãŒã«ã¬ãã«ã§å®çŸ©ãããŠããå€æ°ã
æã 圹ç«ã€ã
次ã®ããã«ãã€ã³ããŒãäžã«ã¢ãžã¥ãŒã«ã®åäœã誀ã£ãŠå€æŽããå¯èœæ§ããããŸã ã¢ãžã¥ãŒã«ã¬ãã«å€æ°ã®å²ãåœãŠã¯ãã¢ãžã¥ãŒã«ã®ã€ã³ããŒãæã«æ¢ã«å®äºããŠããŸãã
ã¯ã©ã¹å€æ°ãåªå ããŠã°ããŒãã«å€æ°ã䜿çšããªãã§ãã ããã 以äžã®ããã€ãã®äŸå€ïŒ
å®çŸ©
ã¢ãžã¥ãŒã«ã¬ãã«ã§å®çŸ©ãããŠããå€æ°ã
é·æ
æã 圹ç«ã€ã
çæ
次ã®ããã«ãã€ã³ããŒãäžã«ã¢ãžã¥ãŒã«ã®åäœã誀ã£ãŠå€æŽããå¯èœæ§ããããŸã ã¢ãžã¥ãŒã«ã¬ãã«å€æ°ã®å²ãåœãŠã¯ãã¢ãžã¥ãŒã«ã®ã€ã³ããŒãæã«æ¢ã«å®äºããŠããŸãã
解決ç
ã¯ã©ã¹å€æ°ãåªå ããŠã°ããŒãã«å€æ°ã䜿çšããªãã§ãã ããã 以äžã®ããã€ãã®äŸå€ïŒ
- æšæºã¹ã¯ãªããèšå®ã
- ã¢ãžã¥ãŒã«ã¬ãã«ã®å®æ°ã ããšãã°ã PI = 3.14159ã§ãã å®æ°ã«ã¯ã倧æåãšã¢ã³ããŒã¹ã³ã¢ã®ã¿ã䜿çšããŠååãä»ããå¿ èŠããããŸãã 以äžã®åœåèŠåãåç §ããŠãã ããã
- ã°ããŒãã«å€æ°ã䜿çšããŠãé¢æ°ã«å¿ èŠãªå€ãŸãã¯é¢æ°ã«ãã£ãŠè¿ãããå€ããã£ãã·ã¥ãããšäŸ¿å©ãªå ŽåããããŸãã
- å¿ èŠã«å¿ããŠãã¢ãžã¥ãŒã«å ã«ã°ããŒãã«å€æ°ãäœæãããããªãã¯ã¢ãžã¥ãŒã«ã¬ãã«ã®é¢æ°ããã¢ã¯ã»ã¹ã§ããããã«ããå¿ èŠããããŸãã 以äžã®åœåèŠåãåç §ããŠãã ããã
å ¥ãå/ããŒã«ã«/å éšã¯ã©ã¹ãšé¢æ°
ãã¹ãããã/ããŒã«ã«/å
éšã¯ã©ã¹ãšé¢æ°ãè¯ã
ã¯ã©ã¹ã¯ãã¡ãœãããé¢æ°ããŸãã¯å¥ã®ã¯ã©ã¹å ã§å®çŸ©ã§ããŸãã é¢æ°ã¯ãã¡ãœãããŸãã¯ä»ã®é¢æ°å ã§å®çŸ©ã§ããŸãã å ¥ãåé¢æ°ã«ã¯ã芪é åã§å®çŸ©ãããå€æ°ãžã®èªã¿åãå°çšã¢ã¯ã»ã¹ããããŸãã
éåžžã«éãããã¹ããŒã¹å ã§ã®ã¿äœ¿çšãããè£å©ã¯ã©ã¹ããã³é¢æ°ãå®çŸ©ã§ããŸãã ADTã®ååã«æºæ ããŠããŸãã
ãã¹ããããã¯ã©ã¹ãŸãã¯ããŒã«ã«ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯ã·ãªã¢ã«åã§ããŸããã
圌ãã¯è¯ãã§ãã
å®çŸ©
ã¯ã©ã¹ã¯ãã¡ãœãããé¢æ°ããŸãã¯å¥ã®ã¯ã©ã¹å ã§å®çŸ©ã§ããŸãã é¢æ°ã¯ãã¡ãœãããŸãã¯ä»ã®é¢æ°å ã§å®çŸ©ã§ããŸãã å ¥ãåé¢æ°ã«ã¯ã芪é åã§å®çŸ©ãããå€æ°ãžã®èªã¿åãå°çšã¢ã¯ã»ã¹ããããŸãã
é·æ
éåžžã«éãããã¹ããŒã¹å ã§ã®ã¿äœ¿çšãããè£å©ã¯ã©ã¹ããã³é¢æ°ãå®çŸ©ã§ããŸãã ADTã®ååã«æºæ ããŠããŸãã
çæ
ãã¹ããããã¯ã©ã¹ãŸãã¯ããŒã«ã«ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯ã·ãªã¢ã«åã§ããŸããã
解決ç
圌ãã¯è¯ãã§ãã
ãªã¹ããžã§ãã¬ãŒã¿ãŒ
ç°¡åãªå Žåã«äœ¿çšã§ããŸãã
ãªã¹ããžã§ãã¬ãŒã¿ãŒãšåŒãžã§ãã¬ãŒã¿ãŒã¯ã mapïŒïŒ ã filterïŒïŒããŸãã¯lambdaåŒã«é Œããã«ããªã¹ããšã€ãã¬ãŒã¿ãŒãäœæããããã®ã³ã³ãã¯ãã§å¹ççãªæ¹æ³ãæäŸããŸãã
åçŽãªãªã¹ããžã§ãã¬ãŒã¿ãŒã¯ããªã¹ããäœæããä»ã®æ¹æ³ãããç°¡æœã§ã·ã³ãã«ã§ãã åŒãžã§ãã¬ãŒã¿ã¯éåžžã«å¹ççã§ã ãªã¹ãå šäœãäžåºŠã«äœæãããããã§ã¯ãããŸããã
è€éãªãªã¹ããžã§ãã¬ãŒã¿ãŒãŸãã¯åŒãžã§ãã¬ãŒã¿ãŒã¯èªã¿ã«ããå ŽåããããŸãã
ç°¡åãªå Žåã«äœ¿çšã§ããŸãã åããŒãã¯1è¡ã«é 眮ããå¿ èŠããããŸãã ã¹ããŒãã¡ã³ããæ¡ä»¶åŒã®å®çŸ©ã衚瀺ããŸãã è€æ°ã®forã¹ããŒãã¡ã³ããŸãã¯æ¡ä»¶ã¯ç¡å¹ã§ãã åŒãè€éãããå Žåã¯ãã«ãŒãã䜿çšããŸãã
è¯ãïŒ
æªãïŒ
å®çŸ©
ãªã¹ããžã§ãã¬ãŒã¿ãŒãšåŒãžã§ãã¬ãŒã¿ãŒã¯ã mapïŒïŒ ã filterïŒïŒããŸãã¯lambdaåŒã«é Œããã«ããªã¹ããšã€ãã¬ãŒã¿ãŒãäœæããããã®ã³ã³ãã¯ãã§å¹ççãªæ¹æ³ãæäŸããŸãã
é·æ
åçŽãªãªã¹ããžã§ãã¬ãŒã¿ãŒã¯ããªã¹ããäœæããä»ã®æ¹æ³ãããç°¡æœã§ã·ã³ãã«ã§ãã åŒãžã§ãã¬ãŒã¿ã¯éåžžã«å¹ççã§ã ãªã¹ãå šäœãäžåºŠã«äœæãããããã§ã¯ãããŸããã
çæ
è€éãªãªã¹ããžã§ãã¬ãŒã¿ãŒãŸãã¯åŒãžã§ãã¬ãŒã¿ãŒã¯èªã¿ã«ããå ŽåããããŸãã
解決ç
ç°¡åãªå Žåã«äœ¿çšã§ããŸãã åããŒãã¯1è¡ã«é 眮ããå¿ èŠããããŸãã ã¹ããŒãã¡ã³ããæ¡ä»¶åŒã®å®çŸ©ã衚瀺ããŸãã è€æ°ã®forã¹ããŒãã¡ã³ããŸãã¯æ¡ä»¶ã¯ç¡å¹ã§ãã åŒãè€éãããå Žåã¯ãã«ãŒãã䜿çšããŸãã
è¯ãïŒ
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')
æªãïŒ
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)
æšæºã®ã€ãã¬ãŒã¿ãšæŒç®å
æšæºã®ã€ãã¬ãŒã¿ãšæŒç®åã䜿çšãã
èŸæžããªã¹ããªã©ã®ã³ã³ããã¿ã€ãã¯ãæšæºã€ãã¬ãŒã¿ããã¹ããªãã¬ãŒã¿ã®ã»ãããå®çŸ©ããŸãã
æšæºã®ã€ãã¬ãŒã¿ãšæŒç®åã¯ã·ã³ãã«ã§å¹ççã§ãã å éšã®ååŒã³åºããªãã§ãæäœãçŽæ¥è¡šçŸããŸãã ãããŠãæšæºæŒç®åã䜿çšããé¢æ°ã¯ç°¡åã§ãã ãã®æäœããµããŒãããããŸããŸãªã¿ã€ãã§äœ¿çšã§ããŸãã
ã¡ãœããã®ååã§ãªããžã§ã¯ãã®ã¿ã€ãã«ååãä»ããããšã¯ã§ããŸããïŒããšãã°ã has_keyïŒïŒã¯ããããèŸæžã§ããããšãæå³ããŸãïŒã ãããå©ç¹ã§ãã
ãªã¹ããèŸæžããã¡ã€ã«ãªã©ããããããµããŒãããåã«ã¯æšæºã®ã€ãã¬ãŒã¿ãšæŒç®åã䜿çšããŸãã çµã¿èŸŒã¿åãã€ãã¬ãŒã¿ã¡ãœãããå®çŸ©ããŸãã ç¹°ãè¿ãäžã«ã³ã³ããèªäœãå€æŽããå Žåãé€ãããªã¹ããè¿ãã¡ãœããããããããã®ã¡ãœãããåªå ããŠãã ããã
è¯ãïŒ
æªãïŒ
å®çŸ©
èŸæžããªã¹ããªã©ã®ã³ã³ããã¿ã€ãã¯ãæšæºã€ãã¬ãŒã¿ããã¹ããªãã¬ãŒã¿ã®ã»ãããå®çŸ©ããŸãã
é·æ
æšæºã®ã€ãã¬ãŒã¿ãšæŒç®åã¯ã·ã³ãã«ã§å¹ççã§ãã å éšã®ååŒã³åºããªãã§ãæäœãçŽæ¥è¡šçŸããŸãã ãããŠãæšæºæŒç®åã䜿çšããé¢æ°ã¯ç°¡åã§ãã ãã®æäœããµããŒãããããŸããŸãªã¿ã€ãã§äœ¿çšã§ããŸãã
çæ
ã¡ãœããã®ååã§ãªããžã§ã¯ãã®ã¿ã€ãã«ååãä»ããããšã¯ã§ããŸããïŒããšãã°ã has_keyïŒïŒã¯ããããèŸæžã§ããããšãæå³ããŸãïŒã ãããå©ç¹ã§ãã
解決ç
ãªã¹ããèŸæžããã¡ã€ã«ãªã©ããããããµããŒãããåã«ã¯æšæºã®ã€ãã¬ãŒã¿ãšæŒç®åã䜿çšããŸãã çµã¿èŸŒã¿åãã€ãã¬ãŒã¿ã¡ãœãããå®çŸ©ããŸãã ç¹°ãè¿ãäžã«ã³ã³ããèªäœãå€æŽããå Žåãé€ãããªã¹ããè¿ãã¡ãœããããããããã®ã¡ãœãããåªå ããŠãã ããã
è¯ãïŒ
for key in adict: ... if key not in adict: ... if obj in alist: ... for line in afile: ... for k, v in dict.iteritems(): ...
æªãïŒ
for key in adict.keys(): ... if not adict.has_key(key): ... for line in afile.readlines(): ...
çºé»æ©
å¿
èŠã«å¿ããŠãžã§ãã¬ãŒã¿ãŒã䜿çšãã
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ã yieldã¹ããŒãã¡ã³ããå®è¡ãããã³ã«å€ãçæããå埩åãè¿ããŸãã å€ãçæããããšã次ã®å€ãå¿ èŠã«ãªããŸã§é¢æ°ã®å®è¡ç¶æ ãäžæåæ¢ãããŸãã
ã³ãŒãã次ã®ããã«åçŽåããŸã ããŒã«ã«å€æ°ãšå¶åŸ¡ãããŒã®ç¶æ ã¯ãåŒã³åºãããšã«åããŸãŸã§ãã ãžã§ãã¬ãŒã¿ã¯ãå€ã®ãªã¹ããäžåºŠã«äœæããé¢æ°ãããå°ãªãã¡ã¢ãªã§æžã¿ãŸãã
çæã¯ãããŸããã
çŽ æŽãããã ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®ããã¥ã¡ã³ãè¡ã§ã¯ããReturnsïŒãã§ã¯ãªããGeneratesïŒããåªå ããŠãã ããã
å®çŸ©
ãžã§ãã¬ãŒã¿ãŒé¢æ°ã¯ã yieldã¹ããŒãã¡ã³ããå®è¡ãããã³ã«å€ãçæããå埩åãè¿ããŸãã å€ãçæããããšã次ã®å€ãå¿ èŠã«ãªããŸã§é¢æ°ã®å®è¡ç¶æ ãäžæåæ¢ãããŸãã
é·æ
ã³ãŒãã次ã®ããã«åçŽåããŸã ããŒã«ã«å€æ°ãšå¶åŸ¡ãããŒã®ç¶æ ã¯ãåŒã³åºãããšã«åããŸãŸã§ãã ãžã§ãã¬ãŒã¿ã¯ãå€ã®ãªã¹ããäžåºŠã«äœæããé¢æ°ãããå°ãªãã¡ã¢ãªã§æžã¿ãŸãã
çæ
çæã¯ãããŸããã
解決ç
çŽ æŽãããã ãžã§ãã¬ãŒã¿ãŒé¢æ°ã®ããã¥ã¡ã³ãè¡ã§ã¯ããReturnsïŒãã§ã¯ãªããGeneratesïŒããåªå ããŠãã ããã
ã©ã ãé¢æ°
ã€ã³ã©ã€ã³åŒã«é©ããŠããŸãã
Lambdaé¢æ°ã¯ãæ£èŠé¢æ°ã®æ§ç¯ã®ä»£æ¿ãšããŠãåŒã§å¿åé¢æ°ãå®çŸ©ããŸãã ãããã¯ã mapïŒïŒãfilterïŒïŒãªã©ã®é«éé¢æ°ã®ã³ãŒã«ããã¯é¢æ°ãŸãã¯æŒç®åã宣èšããããã«ãã䜿çšãããŸãã
䟿å©ã«ã
ããŒã«ã«é¢æ°ãããèªã¿åããšãããã°ãå°é£ã§ãã ååããªããšãã³ãŒã«ã¹ã¿ãã¯ãèªã¿ã«ãããªããŸãã è¡šçŸåã¯å¶éãããŠããŸã é¢æ°ã«ã¯1ã€ã®åŒã®ã¿ãå«ããããšãã§ããŸãã
ã€ã³ã©ã€ã³åŒã«é©ããŠããŸãã ã©ã ãé¢æ°å ã®ã³ãŒãã60ã80æåããé·ãå Žåããã®é¢æ°ãéåžžã®ïŒãŸãã¯ãã¹ããããïŒé¢æ°ãšããŠå®çŸ©ããæ¹ãé©åãªå ŽåããããŸãã ä¹ç®ãªã©ã®åçŽãªæŒç®ã§ã¯ãã©ã ãé¢æ°ã®ä»£ããã«æŒç®åã¢ãžã¥ãŒã«ã®é¢æ°ã䜿çšããŸãã ããšãã°ã lambda xãyïŒx * yã®ä»£ããã«operator.mulã䜿çšããããšããå§ãããŸãã
å®çŸ©
Lambdaé¢æ°ã¯ãæ£èŠé¢æ°ã®æ§ç¯ã®ä»£æ¿ãšããŠãåŒã§å¿åé¢æ°ãå®çŸ©ããŸãã ãããã¯ã mapïŒïŒãfilterïŒïŒãªã©ã®é«éé¢æ°ã®ã³ãŒã«ããã¯é¢æ°ãŸãã¯æŒç®åã宣èšããããã«ãã䜿çšãããŸãã
é·æ
䟿å©ã«ã
çæ
ããŒã«ã«é¢æ°ãããèªã¿åããšãããã°ãå°é£ã§ãã ååããªããšãã³ãŒã«ã¹ã¿ãã¯ãèªã¿ã«ãããªããŸãã è¡šçŸåã¯å¶éãããŠããŸã é¢æ°ã«ã¯1ã€ã®åŒã®ã¿ãå«ããããšãã§ããŸãã
解決ç
ã€ã³ã©ã€ã³åŒã«é©ããŠããŸãã ã©ã ãé¢æ°å ã®ã³ãŒãã60ã80æåããé·ãå Žåããã®é¢æ°ãéåžžã®ïŒãŸãã¯ãã¹ããããïŒé¢æ°ãšããŠå®çŸ©ããæ¹ãé©åãªå ŽåããããŸãã ä¹ç®ãªã©ã®åçŽãªæŒç®ã§ã¯ãã©ã ãé¢æ°ã®ä»£ããã«æŒç®åã¢ãžã¥ãŒã«ã®é¢æ°ã䜿çšããŸãã ããšãã°ã lambda xãyïŒx * yã®ä»£ããã«operator.mulã䜿çšããããšããå§ãããŸãã
æ¡ä»¶åŒ
ã€ã³ã©ã€ã³åŒã«é©ããŠããŸãã
æ¡ä»¶åŒã¯ã ifæ§æã«ç°¡æœãªæ§æãæäŸããã¡ã«ããºã ã§ãã ããšãã°ã cond else 2ã®å Žå ã x = 1ã§ã ã
ifæ§é ãããçããŠå¿«é©ã§ãã
ifã¹ããŒãã¡ã³ããããèªã¿ã«ããå ŽåããããŸãã åŒãéåžžã«é·ãå Žåãæ¡ä»¶ãèšè¿°ããã®ãé£ããããå¯èœæ§ããããŸãã
ã€ã³ã©ã€ã³åŒã«ã®ã¿äœ¿çšããŸãã ãã以å€ã®å Žåã¯ãæ¬æ Œçãªifã³ã³ã¹ãã©ã¯ãã®äœ¿çšãåªå ããŠãã ããã
å®çŸ©
æ¡ä»¶åŒã¯ã ifæ§æã«ç°¡æœãªæ§æãæäŸããã¡ã«ããºã ã§ãã ããšãã°ã cond else 2ã®å Žå ã x = 1ã§ã ã
é·æ
ifæ§é ãããçããŠå¿«é©ã§ãã
çæ
ifã¹ããŒãã¡ã³ããããèªã¿ã«ããå ŽåããããŸãã åŒãéåžžã«é·ãå Žåãæ¡ä»¶ãèšè¿°ããã®ãé£ããããå¯èœæ§ããããŸãã
解決ç
ã€ã³ã©ã€ã³åŒã«ã®ã¿äœ¿çšããŸãã ãã以å€ã®å Žåã¯ãæ¬æ Œçãªifã³ã³ã¹ãã©ã¯ãã®äœ¿çšãåªå ããŠãã ããã
ããã©ã«ãåŒæ°
ã»ãšãã©ã®å Žåã«äœ¿çšã§ããŸã
é¢æ°åŒæ°ãªã¹ãã®æåŸã«ããå€æ°ã«å€ãå²ãåœãŠãããšãã§ããŸããããšãã°ã def fooïŒaãb = 0ïŒïŒ
é¢æ°fooã1ã€ã®åŒæ°ã®ã¿ã§åŒã³åºãããå ŽåãåŒæ°bã¯0ã«ãªããŸã ã 2ã€ã®åŒæ°ã§åŒã³åºãããå Žåã bã¯2çªç®ã®åŒæ°ã§æž¡ãããå€ãæã¡ãŸãã
å€ãã®å Žåãå€ãã®ããã©ã«ãå€ã䜿çšããé¢æ°ããããŸãã ãã ããããã©ã«ãå€ããªãŒããŒã©ã€ãããå¿ èŠãããå ŽåããããŸãã Pythonã¯ã¡ãœãã/é¢æ°ã®ãªãŒããŒããŒãããµããŒãããŠããŸãããæšæºã®åŒæ°ã¯ããªãŒããŒããŒãã®åäœããã·ãã¥ã¬ãŒããããç°¡åãªæ¹æ³ã§ãã
æšæºåŒæ°ã®å€ã¯ãã¢ãžã¥ãŒã«ã®ããŒãäžã«1åèšç®ãããŸãã åŒæ°ããªã¹ããèŸæžãªã©ã®å¯å€ãªããžã§ã¯ãã§ããå Žåãããã«ããåé¡ãçºçããå¯èœæ§ããããŸãã é¢æ°ããªããžã§ã¯ããå€æŽããå ŽåïŒããšãã°ããªã¹ãã«é ç®ãè¿œå ããããšã«ããïŒãããã©ã«ãå€ãå€æŽãããŸãã
次ã®èŠåãšãšãã«äœ¿çšãããå ŽåããããŸãã
å¯å€ãªããžã§ã¯ããé¢æ°ãŸãã¯ã¡ãœããå®çŸ©ã®æšæºå€ãšããŠäœ¿çšããªãã§ãã ããã
è¯ãïŒ
æªãïŒ
ã³ãŒãåŒã³åºãã§ã¯ãããã©ã«ãå€ãæã€åŒæ°ã«ååä»ãã®å€ã䜿çšããå¿ èŠããããŸãã ããã«ãããã³ãŒããææžåããããšãã§ããå¿ èŠä»¥äžã®åŒæ°ãæž¡ããããšãã«æ¬ é¥ãé²æ¢ããã³æ€åºã§ããŸãã
è¯ãïŒ
æªãïŒ
å®çŸ©
é¢æ°åŒæ°ãªã¹ãã®æåŸã«ããå€æ°ã«å€ãå²ãåœãŠãããšãã§ããŸããããšãã°ã def fooïŒaãb = 0ïŒïŒ
é¢æ°fooã1ã€ã®åŒæ°ã®ã¿ã§åŒã³åºãããå ŽåãåŒæ°bã¯0ã«ãªããŸã ã 2ã€ã®åŒæ°ã§åŒã³åºãããå Žåã bã¯2çªç®ã®åŒæ°ã§æž¡ãããå€ãæã¡ãŸãã
é·æ
å€ãã®å Žåãå€ãã®ããã©ã«ãå€ã䜿çšããé¢æ°ããããŸãã ãã ããããã©ã«ãå€ããªãŒããŒã©ã€ãããå¿ èŠãããå ŽåããããŸãã Pythonã¯ã¡ãœãã/é¢æ°ã®ãªãŒããŒããŒãããµããŒãããŠããŸãããæšæºã®åŒæ°ã¯ããªãŒããŒããŒãã®åäœããã·ãã¥ã¬ãŒããããç°¡åãªæ¹æ³ã§ãã
çæ
æšæºåŒæ°ã®å€ã¯ãã¢ãžã¥ãŒã«ã®ããŒãäžã«1åèšç®ãããŸãã åŒæ°ããªã¹ããèŸæžãªã©ã®å¯å€ãªããžã§ã¯ãã§ããå Žåãããã«ããåé¡ãçºçããå¯èœæ§ããããŸãã é¢æ°ããªããžã§ã¯ããå€æŽããå ŽåïŒããšãã°ããªã¹ãã«é ç®ãè¿œå ããããšã«ããïŒãããã©ã«ãå€ãå€æŽãããŸãã
解決ç
次ã®èŠåãšãšãã«äœ¿çšãããå ŽåããããŸãã
å¯å€ãªããžã§ã¯ããé¢æ°ãŸãã¯ã¡ãœããå®çŸ©ã®æšæºå€ãšããŠäœ¿çšããªãã§ãã ããã
è¯ãïŒ
def foo(a, b=None): if b is None: b = []
æªãïŒ
def foo(a, b=[]):
ã³ãŒãåŒã³åºãã§ã¯ãããã©ã«ãå€ãæã€åŒæ°ã«ååä»ãã®å€ã䜿çšããå¿ èŠããããŸãã ããã«ãããã³ãŒããææžåããããšãã§ããå¿ èŠä»¥äžã®åŒæ°ãæž¡ããããšãã«æ¬ é¥ãé²æ¢ããã³æ€åºã§ããŸãã
def foo(a, b=1): ...
è¯ãïŒ
foo(1) foo(1, b=2)
æªãïŒ
foo(1, 2)
ããããã£
ããããã£ã䜿çšããŠããŒã¿ã«ã¢ã¯ã»ã¹ããããå€ãå²ãåœãŠãããã
ããããã£ã䜿çšããŠãéåžžã¯åçŽãªgetterãŸãã¯setterã¡ãœããã䜿çšããããŒã¿ã«ã¢ã¯ã»ã¹ããããå€ãå²ãåœãŠããããŸãã
ãã¡ãããèšç®ãããã»ã©è€éã§ãªãå Žåã¯ãã¢ã¯ã»ã¹ã¡ãœããã®åŒã³åºããšå±æ§ã®å²ãåœãŠãæšæºã®å±æ§ã¢ã¯ã»ã¹ãšããŠã©ããããæ¹æ³ã
å±æ§ã«ç°¡åã«ã¢ã¯ã»ã¹ããããã®getããã³setã¡ãœããã®æ瀺çãªåŒã³åºããæé€ããããšã«ãããèªã¿ããããåäžããŸãã é 延èšç®ãå¯èœã§ãã ã¯ã©ã¹ã€ã³ã¿ãŒãã§ã€ã¹ãç¶æããããšã¯ãPythonãã¹ã®äžéšã§ãããšèããããŠããŸãã ããã©ãŒãã³ã¹ã®èŠ³ç¹ãããå€æ°ãžã®çŽæ¥ã¢ã¯ã»ã¹ãå¿ èŠãªå ŽåãåçŽãªã²ãã¿ãŒã¡ãœããïŒã¢ã¯ã»ãµïŒãä»ããŠããããã£ã«ã¢ã¯ã»ã¹ã§ããŸãã ãŸããã€ã³ã¿ãŒãã§ã€ã¹ãå€æŽããã«ãåŸã§ã¢ã¯ã»ã¹æ¹æ³ãè¿œå ããããšãã§ããŸãã
ããããã£ã¯ãgetããã³setã¡ãœããã宣èšãããåŸã«å®£èšãããã³ãŒãå ã®ä»¥äžã®ããããã£ã«äœ¿çšãããããšãèŠæ±ããŸãïŒ @propertyãã³ã¬ãŒã¿ã䜿çšããŠäœæãããèªã¿åãå°çšããããã£ãé€ãã以äžãåç §ïŒã ãªããžã§ã¯ãã¯ã©ã¹ããç¶æ¿ããå¿ èŠããããŸãã ãªãŒããŒããŒãæŒç®åãªã©ã®å¯äœçšãäžæçã«ãªãå ŽåããããŸãã åå«ã¯ã©ã¹ã¯èª€è§£ãæããããããŸããã
äœæããã³ãŒãã®ããããã£ã䜿çšããŠãåçŽãªgetã¡ãœãããŸãã¯setã¡ãœããã䜿çšããããŒã¿ã«ã¢ã¯ã»ã¹ãŸãã¯å€æŽããŸãã èªã¿åãå°çšããããã£ã¯ã @ propertyãã³ã¬ãŒã¿ã䜿çšããŠäœæããå¿ èŠããããŸãã 芪ããããã£ããªãŒããŒã©ã€ããããªãéããããããã£ã®ç¶æ¿ã¯ããŸãéæã«ãªããªãå ŽåããããŸãã ãããã£ãŠãããããã£ãä»ããŠåŒã³åºããããµãã¯ã©ã¹ã®ã¡ãœããããªãŒããŒã©ã€ãããã«ã¯ãã²ãã¿ãŒã¡ãœãããéæ¥çã«åŒã³åºãããããšã確èªããå¿ èŠããããŸãïŒ ãã³ãã¬ãŒãã¡ãœãããã¿ãŒã³ã䜿çšïŒ
è¯ãïŒ
å®çŸ©
ãã¡ãããèšç®ãããã»ã©è€éã§ãªãå Žåã¯ãã¢ã¯ã»ã¹ã¡ãœããã®åŒã³åºããšå±æ§ã®å²ãåœãŠãæšæºã®å±æ§ã¢ã¯ã»ã¹ãšããŠã©ããããæ¹æ³ã
é·æ
å±æ§ã«ç°¡åã«ã¢ã¯ã»ã¹ããããã®getããã³setã¡ãœããã®æ瀺çãªåŒã³åºããæé€ããããšã«ãããèªã¿ããããåäžããŸãã é 延èšç®ãå¯èœã§ãã ã¯ã©ã¹ã€ã³ã¿ãŒãã§ã€ã¹ãç¶æããããšã¯ãPythonãã¹ã®äžéšã§ãããšèããããŠããŸãã ããã©ãŒãã³ã¹ã®èŠ³ç¹ãããå€æ°ãžã®çŽæ¥ã¢ã¯ã»ã¹ãå¿ èŠãªå ŽåãåçŽãªã²ãã¿ãŒã¡ãœããïŒã¢ã¯ã»ãµïŒãä»ããŠããããã£ã«ã¢ã¯ã»ã¹ã§ããŸãã ãŸããã€ã³ã¿ãŒãã§ã€ã¹ãå€æŽããã«ãåŸã§ã¢ã¯ã»ã¹æ¹æ³ãè¿œå ããããšãã§ããŸãã
çæ
ããããã£ã¯ãgetããã³setã¡ãœããã宣èšãããåŸã«å®£èšãããã³ãŒãå ã®ä»¥äžã®ããããã£ã«äœ¿çšãããããšãèŠæ±ããŸãïŒ @propertyãã³ã¬ãŒã¿ã䜿çšããŠäœæãããèªã¿åãå°çšããããã£ãé€ãã以äžãåç §ïŒã ãªããžã§ã¯ãã¯ã©ã¹ããç¶æ¿ããå¿ èŠããããŸãã ãªãŒããŒããŒãæŒç®åãªã©ã®å¯äœçšãäžæçã«ãªãå ŽåããããŸãã åå«ã¯ã©ã¹ã¯èª€è§£ãæããããããŸããã
解決ç
äœæããã³ãŒãã®ããããã£ã䜿çšããŠãåçŽãªgetã¡ãœãããŸãã¯setã¡ãœããã䜿çšããããŒã¿ã«ã¢ã¯ã»ã¹ãŸãã¯å€æŽããŸãã èªã¿åãå°çšããããã£ã¯ã @ propertyãã³ã¬ãŒã¿ã䜿çšããŠäœæããå¿ èŠããããŸãã 芪ããããã£ããªãŒããŒã©ã€ããããªãéããããããã£ã®ç¶æ¿ã¯ããŸãéæã«ãªããªãå ŽåããããŸãã ãããã£ãŠãããããã£ãä»ããŠåŒã³åºããããµãã¯ã©ã¹ã®ã¡ãœããããªãŒããŒã©ã€ãããã«ã¯ãã²ãã¿ãŒã¡ãœãããéæ¥çã«åŒã³åºãããããšã確èªããå¿ èŠããããŸãïŒ ãã³ãã¬ãŒãã¡ãœãããã¿ãŒã³ã䜿çšïŒ
è¯ãïŒ
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.__set_area(area) area = property(___get_area, ___set_area, doc="""Gets or sets the area of the square.""") @property def perimeter(self): return self.side * 4
ç/åœã®èšç®
å¯èœã§ããã°æ瀺çã«Falseã䜿çšãã
ããŒã«å€ã®ã³ã³ããã¹ãå ã«ããå ŽåãPythonã¯ç¹å®ã®å€ãFalseã§èšç®ããŸãã ãããèŠããæãç°¡åãªæ¹æ³ã¯ã False ã 0 ã None ã [] ã {}ãªã©ã®ãã¹ãŠã®ã空ã®ãå€ãããŒã«ã³ã³ããã¹ãã§Falseã«è©äŸ¡ãããããšãç¥ãããšã§ãã
Pythonã®ããŒã«å€ã䜿çšãããã®ãããªæ¡ä»¶ä»ãæ§é ã¯èªã¿ãããããšã©ãŒãçºçãã«ããã§ãã ã»ãšãã©ã®å Žåãããé«éã§ãã
C / C ++éçºè ã«ãšã£ãŠã¯å¥åŠã«èŠãããããããŸããã
å¯èœã§ããã°ãæ瀺çã«Falseã䜿çšããŸãã ããšãã°ã fooïŒã fooïŒ= []ïŒãããåªããŠããå Žåã ããã€ãã®äŸå€ãèŠããŠããå¿ èŠããããŸãã
è¯ãïŒ
æªãïŒ
â 0âïŒã€ãŸããæååãšããŠã®0ïŒã¯Trueãšè©äŸ¡ãããããšã«æ³šæããŠãã ããã
å®çŸ©
ããŒã«å€ã®ã³ã³ããã¹ãå ã«ããå ŽåãPythonã¯ç¹å®ã®å€ãFalseã§èšç®ããŸãã ãããèŠããæãç°¡åãªæ¹æ³ã¯ã False ã 0 ã None ã [] ã {}ãªã©ã®ãã¹ãŠã®ã空ã®ãå€ãããŒã«ã³ã³ããã¹ãã§Falseã«è©äŸ¡ãããããšãç¥ãããšã§ãã
é·æ
Pythonã®ããŒã«å€ã䜿çšãããã®ãããªæ¡ä»¶ä»ãæ§é ã¯èªã¿ãããããšã©ãŒãçºçãã«ããã§ãã ã»ãšãã©ã®å Žåãããé«éã§ãã
çæ
C / C ++éçºè ã«ãšã£ãŠã¯å¥åŠã«èŠãããããããŸããã
解決ç
å¯èœã§ããã°ãæ瀺çã«Falseã䜿çšããŸãã ããšãã°ã fooïŒã fooïŒ= []ïŒãããåªããŠããå Žåã ããã€ãã®äŸå€ãèŠããŠããå¿ èŠããããŸãã
- Noneãªã©ã®ã·ã³ã°ã«ãã³ãªããžã§ã¯ããæ¯èŒããã«ã¯ã ==ãŸãã¯ïŒ=ã䜿çšããªãã§ãã ããã 䜿çšã¯isãŸãã¯notã§ãã
- if xïŒã®èšè¿°ã«æ³šæããŠãã ãããxãNoneã§ã¯ãªãå Žå ãããšãã°ãããã©ã«ãã§Noneã«ãªã£ãŠããããå€ãå¥ã®ãã®ã«å€æŽãããŠããå€æ°ãŸãã¯åŒæ°ããã¹ãããå Žåã å¥ã®å€ã¯ãããŒã«ãã§ãã¯ã䜿çšããŠFalseã§èšç®ã§ããŸãã
- ==ã䜿çšããŠããŒã«å€æ°ãFalseãšæ¯èŒããªãã§ãã ããã 代ããã«xã§ã¯ãªãifã䜿çšããŠãã ããã FalseãšNoneãåºå¥ããå¿ èŠãããå Žå㯠ã xã x㧠ã xãNoneã§ãªã å Žåãªã©ã®æåååŒã䜿çšããŸãã
- ã·ãŒã±ã³ã¹ïŒè¡ããªã¹ããã¿ãã«ïŒã®å Žåã空ã®ã·ãŒã±ã³ã¹ãFalseã«è©äŸ¡ããããšããäºå®ã䜿çšããŸãããããã£ãŠãseqã§ãªãå ŽåããŸãã¯seqã lenïŒseqïŒãŸãã¯lenïŒseqïŒã§ãªãå ŽåãããåªããŠããŸãã
- æŽæ°ã䜿çšããå Žåã Falseãšã®æ瀺çãªæ¯èŒã«ã¯ãã¡ãªããããããªã¹ã¯ã䌎ããŸãïŒ Noneã0ãšããŠã©ã³ãã ã«åŠçïŒã æŽæ°ã§ããïŒ lenïŒïŒé¢æ°ã®å®è¡çµæã§ã¯ãªãïŒå€ããŒããšæ¯èŒã§ããŸãã
è¯ãïŒ
if not users: print "no" if foo == 0: self.handle_zero() if i % 10 == 0: self.handle_multiple_of_ten()
æªãïŒ
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()
â 0âïŒã€ãŸããæååãšããŠã®0ïŒã¯Trueãšè©äŸ¡ãããããšã«æ³šæããŠãã ããã
å€ãèšèªæ©èœ
å¯èœãªå Žåãæååã¢ãžã¥ãŒã«ã®ä»£ããã«ã¡ãœããã䜿çšããŸã
å¯èœãªå Žåã¯ã æååã¢ãžã¥ãŒã«ã®ä»£ããã«ã¡ãœããã䜿çšããŸãã é©çšé¢æ°ã§ã¯ãªããæ§æãéããŠé¢æ°åŒã³åºãã䜿çšããŸãã é¢æ°åŒæ°ã«ã€ã³ã©ã€ã³ã©ã ãåŒããããã£ã«ã¿ãŒããã³ãããé¢æ°ã®ä»£ããã«ããªã¹ããžã§ãã¬ãŒã¿ãŒãšforã«ãŒãã䜿çšããŸãã reduceã®ä»£ããã«ã«ãŒãã䜿çšããŸãã
Pythonã®çŸåšã®ããŒãžã§ã³ã¯ã人ã ãééããªãæé«ã®ãã®ãèŠã€ãã代æ¿æ§æãæäŸããŸãã
ãããã®æ©èœããµããŒãããªãPythonã®ããŒãžã§ã³ã¯äœ¿çšããªããããæ°ããã¹ã¿ã€ã«ã䜿çšããçç±ã¯ãããŸããã
è¯ãïŒ
æªãïŒ
å®çŸ©
Pythonã®çŸåšã®ããŒãžã§ã³ã¯ã人ã ãééããªãæé«ã®ãã®ãèŠã€ãã代æ¿æ§æãæäŸããŸãã
解決ç
ãããã®æ©èœããµããŒãããªãPythonã®ããŒãžã§ã³ã¯äœ¿çšããªããããæ°ããã¹ã¿ã€ã«ã䜿çšããçç±ã¯ãããŸããã
è¯ãïŒ
words = foo.split(':') [x[1] for x in my_list if x[2] == 5] map(math.sqrt, data) # - fn(*args, **kwargs)
æªãïŒ
words = string.split(foo, ':') map(lambda x: x[1], filter(lambda x: x[2] == 5, my_list))
èªåœã®ã³ã³ããã¹ã
䜿çšå¯èœ
Pythonã®å ¥ãåé¢æ°ã¯ãå²ãã§ããé¢æ°ã§å®çŸ©ãããå€æ°ãåç §ã§ããŸãããããããå²ãåœãŠãããšã¯ã§ããŸããã å€æ°ã®é¢ä¿ã¯ãããã°ã©ã ã®éçããã¹ãã«åºã¥ãåå¥ã³ã³ããã¹ãã䜿çšããŠè§£æ±ºãããŸãã ã³ãŒããããã¯å ã§ååãå²ãåœãŠããããšãPythonããã®ååãžã®ãã¹ãŠã®åç §ãåŠçããŸãïŒå®£èšã䜿çšã®åã«ããå Žåã§ãïŒã ã°ããŒãã«å®£èšãååšããå Žåãååã¯ã°ããŒãã«å€æ°ãšããŠæ±ãããŸãã
ãã®æ©èœã®äœ¿çšäŸïŒ
å€ãã®å Žåãããã¯ãªãŒã³ã§ãšã¬ã¬ã³ããªã³ãŒãã«ãªããŸãã LispãšSchemeïŒããã³HaskellãšMLãš..ïŒããã°ã©ããŒããããæ±ãã®ã¯ç¹ã«å¿«é©ã§ãã
PEP-0227ããååŸãããã®äŸã®ããã«ãå¥åŠãªãšã©ãŒã«ã€ãªããå¯èœæ§ããããŸãã
ãããã£ãŠã fooïŒ[1,2,3]ïŒã¯1 2 3 4ã§ã¯ãªã1 2 3 3ãåºåããŸãã
䜿çšã§ããŸãã
å®çŸ©
Pythonã®å ¥ãåé¢æ°ã¯ãå²ãã§ããé¢æ°ã§å®çŸ©ãããå€æ°ãåç §ã§ããŸãããããããå²ãåœãŠãããšã¯ã§ããŸããã å€æ°ã®é¢ä¿ã¯ãããã°ã©ã ã®éçããã¹ãã«åºã¥ãåå¥ã³ã³ããã¹ãã䜿çšããŠè§£æ±ºãããŸãã ã³ãŒããããã¯å ã§ååãå²ãåœãŠããããšãPythonããã®ååãžã®ãã¹ãŠã®åç §ãåŠçããŸãïŒå®£èšã䜿çšã®åã«ããå Žåã§ãïŒã ã°ããŒãã«å®£èšãååšããå Žåãååã¯ã°ããŒãã«å€æ°ãšããŠæ±ãããŸãã
ãã®æ©èœã®äœ¿çšäŸïŒ
def get_adder(summand1): """Returns a function that adds numbers to a given number.""" def adder(summand2): return summand1 + summand2 return adder
é·æ
å€ãã®å Žåãããã¯ãªãŒã³ã§ãšã¬ã¬ã³ããªã³ãŒãã«ãªããŸãã LispãšSchemeïŒããã³HaskellãšMLãš..ïŒããã°ã©ããŒããããæ±ãã®ã¯ç¹ã«å¿«é©ã§ãã
çæ
PEP-0227ããååŸãããã®äŸã®ããã«ãå¥åŠãªãšã©ãŒã«ã€ãªããå¯èœæ§ããããŸãã
i = 4 def foo(x): def bar(): print i, # ... # # ... for i in x: # , i Foo, - Bar . print i, bar()
ãããã£ãŠã fooïŒ[1,2,3]ïŒã¯1 2 3 4ã§ã¯ãªã1 2 3 3ãåºåããŸãã
解決ç
䜿çšã§ããŸãã
翻蚳è ãã
è¬èŸ
å¥èªç¹ãèªãã§å©ããŠããã SquaIIã«æè¬ããŸãã