ãªã³ã¿ãŒã¯ãã³ãŒããåäžã®ã¹ã¿ã€ã«ã«ãããã¹ãé²ãã®ã«åœ¹ç«ã¡ãŸãã 確ãã«ãèŠããæºåãã§ããŠããå Žåã«ã®ã¿ãæåŸã«ãpylintïŒdisableããåŽäžããã«ãé ããåããŸãã ãªã³ã¿ãŒã¯ã©ãããã¹ããããªãPylintãã§ããªãã®ãã¯ããªã³ã¿ãŒãç解ããæããŠãããããŒã¿ã»ãœãã¬ãŽã³ãç¥ã£ãŠããŸãã
以äžã«ã ã¢ã¹ã¯ã¯ã®Python Conf ++ã®ãªã³ã¿ãŒã«é¢ããã¬ããŒãã®ããã¹ãçãããããæ£ããè¡ãæ¹æ³ãããªãæ¹æ³ã瀺ããŸãã ãã¬ãŒã³ããŒã·ã§ã³ã«ã¯ãå€ãã®åæ¹åæ§ããªã³ã©ã€ã³ãèŠèŽè ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ããããŸããã è¬æŒè ã¯éäžã§æ祚ãè¡ããèŽè¡ã説åŸããããšããŸããã圌ã¯åŸåãèŠãŠãè°è«ã®ããã«ãæ¯çãå¹³æºåãäžè«ãå€ããããšããŸããã æ祚ã®äžéšã¯åŸ©å·åã«é¥ããŸãããããã¹ãŠã§ã¯ãªããããç»åãå®æãããããã«ãããªãæ·»ä»ãããŠããŸãã
ãªã³ã¿ãŒãå¿
èŠãªã®ã¯ãªãã§ããïŒ
ãªã³ã¿ãŒã®æãéèŠãªã¿ã¹ã¯ã¯ãã³ãŒããåäžã«ããããšã§ãã Pythonã§åãããšãæžãããã®å€ãã®ãªãã·ã§ã³ããããŸããããã«ã«ã³ããå ¥ãããæ¬åŒ§ãéããã®ãå¿ãããå¿ããªãã§ãã ããã 人ã ãé·ãéã³ãŒããæžããšããããã¯ç°ãªãæéã«çž«ãåããããç°çš®ã®æçã®ãããã¯ãŒã¯ãã«ãã®ããã«ãªããŸãã ãã®ãããªæ¯åžã§äœæ¥ããããšã¯äžå¿«ã§ãããã³ãŒããèªã¿ãããšãã欲æ±ãèœèãããããã¯éåžžã«æªãããšã§ãã
ãªã³ã¿ãŒã¯ã¬ãã¥ãŒã§ç掻ã楜ã«ããŸã ã ç§ã¯ã³ãŒãã¬ãã¥ãŒã«æ¥ãŠãèããŸãïŒãç§ã¯ãããããããããŸããïŒ äœåãªã¹ããŒã¹ãä»ã®ãã³ã»ã³ã¹ããããŸãïŒãä»ã®èª°ãã«è¯ãã³ãŒããæºåããŠããããããšæããŸãããã®åŸãçŽ æŽãããæŠå¿µçãªãã®ã«æè¬ããŸãã
ãšãã©ãã³ãŒããèŠãŠããã¹ãŠãããŸããããšæããšãäžéšã®é¢æ°ã§å€æ°ãå€ããããã泚æãæã£ãŠããªããšã©ãŒã衚瀺ããããããŸãã ãªãŒãã¡ãŒã·ã§ã³ã¯ãã®ãšã©ãŒãèŠã€ããŸãããç§ã¯èŠãŸããã ãã®ãããªç¶æ³ã«é¥ããªãããã«ããããã«-ç§ã¯ãªã³ã¿ãŒã䜿ããŸã-圌ã¯é ãããŠããŠèŠã€ãã«ãããã®ããã¹ãŠèŠã€ããŸãã
ãªã³ã¿ãŒãšã¯äœã§ããïŒ
æãç°¡åãªãã®ã¯ãã¹ã¿ã€ã«ã®ã¿ããã§ãã¯ããŸã ïŒäŸïŒ Flake8ïŒ ã ããçšåºŠãé»ã§ãããããããã¯ãªãŒããã©ãŒããŒ-ãªã³ã¿ãŒã§ãã ãªã³ã¿ãŒã¯ãæäœã ãã§ãªãã»ãã³ãã£ã¯ã¹ããã¹ãããŸããäœãããã®ãããªãããã®ãããšã©ãŒãæžããå Žåã¯æã§æã€ã è¯ãäŸã¯Pylint㧠ãããã¯ç§ãã¡å šå¡ãç¥ã£ãŠããã䜿çšããæããŠããŸãã ç§ã¯ãããã®ãªã³ã¿ãŒããã¹ããã©ã¯ãã£ã¹ãšåŒãã§ããŸãã 3çªç®ã®ã¿ã€ãã¯ã¿ã€ããã§ãã¯ã§ã ããããã®ãªã³ã¿ãŒã¯å°ããããŠããŸãã Pythonã®åãã§ãã¯ã¯æ°ããã MypyãšPyreãšãã 2ã€ã®ç«¶åãããã©ãããã©ãŒã ã§è¡ãããŠããŸãã
ãªã³ã¿ãŒã®äœ¿çšæ¹æ³
ç§ã¯ãªã³ã¿ãŒãäžèœè¬ã§ããããã¹ãŠã®ä»£æ¿åã§ãããšäž»åŒµããŠããŸããã ããã§ã¯ãããŸããã ãªã³ã¿ãŒ-ãã©ãããã®æåã®ã¹ããããããã«ãããã³ãŒããå®çšŒåã«å ¥ããŸãã
ãã©ãããã«ã¯3ã€ã®ã¹ãããããããŸãã
- linterãèµ·åããŸãã éåžžã«é«éã§ããœãŒã¹ã³ãŒã以å€ã¯å¿ èŠãããŸãããã€ã³ãã©ã¹ãã©ã¯ãã£ãèšå®ãå¿ èŠãããŸããã ãã§ãã¯ïŒæåã®å¥å šæ§ãã§ãã¯ã«åæ Œ-ãã¹ãŠã¯åé¡ãããŸãã ãåŒãç¶ãäœæ¥ããŸãã
- ã¹ããŒãžãã¹ã ã ãã®ããã»ã¹ã¯ãã³ãŒã以å€ã®ãšã©ãŒã®ããã«ããè€éã§é·ããªããŸãã ã¢ããªã±ãŒã·ã§ã³å šäœãæ£ããå®å šã«ã»ããã¢ããããå¿ èŠããããŸãã
- ã¹ããŒãžã¬ãã¥ãŒ ã
ãããã¯ãã³ãŒããå®çšŒåã«å ¥ãããã«å¿ èŠãªæé ã§ã ã ã¹ãããã1ã€ãå®è¡ããªãã£ãå Žåãäœããå¿ããå ŽåããŸãã¯ã¬ãã¥ãŒæ åœè ããããæ©èœããªããšèšã£ãå Žåãã倱æ-äžè¯ã³ãŒãã¯æ¬çªã«å ¥ããŸããããšããç¢æã衚瀺ãããŸãã
è·å Žã§ãªã³ã¿ãŒã䜿çšããŠããŸããïŒ
ãªã³ã¿ãŒã䜿çšãããã©ããã«ããããããé±7æ¥éåãå³ããäŒæ¥ã®éçºè ã«å°ãããšãå°ãªããšã3åã®1ããªã³ã¿ãŒãéåžžã«å³å¯ã«äœ¿çšããŠããããšãããããŸããCI ãèœã¡ããšããã§ãã¯ãå³ãããªããŸãã æ®ãã¯ã ã¬ããŒãã·ã¹ãã ãšããŠã§ã¯ãªã ãã¹ã¿ã€ã«ããã§ãã¯ããããã ãã«ã»ãŒåçã«ãªã³ã¿ãŒãé©çšããŸãããªã³ã¿ãŒãéå§ããã¬ããŒããçæããŠããã¹ãŠãã©ãã ãæªããã確èªããŸãã ãªã³ã¿ãŒã䜿çšãããŠããŸãããããã¯è¯ãããšã§ãã åŒç€Ÿã§ã¯ãããŒããªã³ãã£ã³ã°ãå€ãã®ãã§ãã¯ãäºéã³ãŒãã¬ãã¥ãŒãªã©ããã¹ãŠãéåžžã«å³ããæ§ç¯ãããŠããŸããã
ã³ãŒãã¬ãã¥ãŒ
ãã®æ®µéã§åé¡ãçºçããŸãã ããã¯ããã©ãããã®æäžäœã§æãå°é£ãªã¹ãããã§ããã³ãŒãã¬ãã¥ãŒãèªååããããšã¯ã§ããŸãããå¯èœã§ããã°ãã³ãŒãèšè¿°ã®èªååã«ã€ãªãããŸãã ããããã°ãããã°ã©ããŒã¯å¿ èŠãªããªããŸãã
ããã©ã«ãã§ã¯ãããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸããã¬ãã¥ãŒã®ããã«ã³ãŒããå ¥åããããšã©ãŒãæ€åºãããããããã以äžãšã©ãŒãäœæããå¿ èŠã¯ãããŸããã ããšãã°ãéçºè ãBaseExceptionããã£ããããããšãããããŸãããããããããªãã§ãã ããã ãã£ããããªãã§ãã ããïŒã 10æ¥åŸãåãããšã ããäžåºŠæãåºããŸãïŒ
-BaseExceptionããã£ããããŸããã
ã ããã§ãããããããŸãããã
1幎ãçµã¡ãŸã-åãééãã æ°ããç·ãæ¥ã-åãééãã ã©ãããã°ãã¹ãŠãèªååããŠãç¶æ³ãäºåºŠãšèµ·ããããé ã«æµ®ãã¶ã®ã ãããã »ãªãŒãã³ããã±ãŒãžãäœæããäœæ¥ã§äœ¿çšãããã¹ãŠã®ã«ãŒã«ãããã«é 眮ããæ¯åæäœæ¥ã§èšè¿°ããªãããã«ã«ãŒã«ãã§ãã¯ãèªååããŸãã ãã¹ãŠãããã«èªååããŸãïŒ
åœç¶ãã æ¢è£œã®ãªã³ã¿ãŒã¯ãã§ã«ååšããåäœãã誰ãã䜿çšããŸã-ãªãç¬èªã®ãã®ã䜿çšããŸããïŒããšèšãããšãã§ããŸãããããŠããªã³ã¿ãŒãæ¬åœã«ããã®ã§ãããªãã¯çµ¶å¯Ÿã«æ£ããã§ãããã ã©ããäœãããã®ãèŠãŠã¿ãŸãããã
ããªã³ã
ã ãªãPylintã§ã¯ãªãã®ãïŒããšããèŠåºãã«ã€ã㊠ããã®è³ªåãäœåºŠãèããããšããããŸãã 圌ã«ãã£ãšæãããçããŸãã Pylintã¯Pythonã³ãŒãã®åªããããã¯ã¹ã¿ãŒããŒã«ã§ããããªã³ã¿ãŒã«ã¯èŠãããªãæ©èœããããŸãã
æäœãã§ãã¯ããã¹ããã©ã¯ãã£ã¹ãã¿ã€ããã§ãã¯ãªã©ããã¹ãŠãçµã¿åãããŸã ã Pylint Typeãã§ãã¯ã¯ãåæ å ±ããªãããæªçºéã§ããäœããã®æ¹æ³ã§è¡šç€ºããããšããŸãããããŸãæ©èœããŸããã ãããã£ãŠãDjangoã§
model_name.some_property
ãèšè¿°ãããšããç³ãèš³ãããŸãããããã®ãããªããããã£ã¯ãããŸãã-䜿çšã§ããŸããïŒããšãããšã©ãŒã衚瀺ãããããšããããããŸãããã©ã°ã€ã³ãããããšãèŠããŠããŸãããã©ãã«ãCeleryã®ãã©ã°ã€ã³ãé 眮ããä»ã®éæ³ã®ã©ã€ãã©ãªã䜿çšããæçµçã«ã©ãã«ã§ãæžããŸãïŒãpylintïŒdisableã...ããã¯ãªã³ã¿ãŒããåŸãããã®ã§ã¯ãããŸããã
ãŠãŒã¶ãŒããé ããããã1ã€ã®æ©èœã¯ãPylintãPythonã®æœè±¡æ§æããªãŒã®ç¬èªã®å®è£ ãæã£ãŠããããšã§ã ã ããã¯ãã³ãŒãã解æããã³ãŒããæ§æããããŒãã®ããªãŒã«é¢ããæ å ±ãååŸãããšãã®ã³ãŒãã®å€èŠ³ã§ãã ç§ã¯èªåã®å®è£ ãæ¬åœã«ééã£ãŠããã®ã§ãèªåã®å®è£ ãæ¬åœã«ä¿¡çšããŠããŸããã
Pylintã«å ããŠãä»ã®ãªã³ã¿ãŒãä»äºãããŠããŸãã
ãœããŒã¯ã
ãããžã§ã¯ãã®è¿ãã®ã©ããã«ååšããããã°ããããå¥åã®ããŒã«ã
- SonarQubeã¯é »ç¹ã«å®è¡ã§ããŸãã ãã©ããã«ãããã€ããç£èŠãç£èŠãæ§æããå¿ èŠããããŸãã
- Javaã§æžãããŠããŸã ã Pythonçšã«ãªã³ã¿ãŒãä¿®æ£ããå Žåã¯ãJavaã§ã³ãŒããèšè¿°ããŸãã æŠå¿µçã«ããã¯ééã£ãŠãããšæããŸã-Pythonã§æžãããšãã§ããéçºè ã¯ãPythonããã¹ãããããã®ã³ãŒããæžãããšãã§ããã¯ãã§ãã
SonarQubeãéçºããäŒç€Ÿã¯ã補åéçºã®æŠå¿µã«ç¹ã«æ³šç®ããŠããŸãã ããã¯åé¡ã«ãªãå¯èœæ§ããããŸãã
SonarQubeã®å©ç¹ã¯ãè€éããæœåšçãªé ãããšã©ãŒããã°ã瀺ãéåžžã«ã¯ãŒã«ãªãã§ãã¯ãããããšã§ãã ç§ã¯ãã§ãã¯ã奜ãã§ããç§ã¯ããããæ®ããŠããã©ãããã©ãŒã ãå€æŽããŸãã
ãã¬ãŒã¯8
ãã°ããããªã³ã¿ãŒã¯éåžžã«åçŽã§ããã1ã€ã®åé¡ããããŸã ãã³ãŒããã©ãã ãããŸãæžãããŠãããããã§ãã¯ããã«ãŒã«ãã»ãšãã©ãããŸãã ã åæã«ãFlake8ã«ã¯å€ãã®éåžžã«ã·ã³ãã«ãªãã©ã°ã€ã³ããããŸããæå°ãã©ã°ã€ã³ã¯å®è£ ããå¿ èŠããã2ã€ã®ã¡ãœããã§ãã Flake8ãããŒã¹ã«ããŠãã©ã°ã€ã³ãäœæããŸããããäŒç€Ÿã«ãšã£ãŠã®ã¡ãªãããç解ããäžã§èããŸããã ãããŠãããããŸããã
äžçã§æãå³ãããªã³ã¿ãŒ
Pythonã«ãµãããããšæããããã¹ãŠã®ãã®ãéããããŒã«ãäœæãã wemake-python-styleguideãšåŒã³ãŸãã ã ããã©ã«ãã§ãªãŒãã³ãœãŒã¹ãè¯ãç¿æ £ã§ãããšä¿¡ããŠããã®ã§ããã©ã°ã€ã³ã¯å ¬éãããŸãã ã ç§ã¯ãå€ãã®ããŒã«ããªãŒãã³ãœãŒã¹ã«ã¢ããããŒããããã°æçã«ãªããšç¢ºä¿¡ããŠããŸãã ç§ãã¡ã®æ¥œåšã®ããã«ã ãäžçã§æãå³ãããªã³ã¿ãŒããšããã¹ããŒã¬ã³ãæãã€ããŸããã
ç§ãã¡ã®ãªã³ã¿ãŒã®ããŒã¯ãŒãã¯å³æ Œã§ãããçã¿ãšèŠãã¿ãæå³ããŸãã
ãªã³ã¿ãŒã䜿çšãããããèŠçã«ãªããªãããã«é ãã€ããã§ããå Žåãããªãããªãã¯ãŸã ãããæ°ã«å ¥ããªãã®ããæ°ã«ããŸãããããã¯æªããªã³ã¿ãŒã§ãã ãšã©ãŒãã¹ãããããã³ãŒãã®å質ãååã«ç£èŠããŠããªããããå¿ èŠãããŸããã äžçã§æãå³ãããã®ãå¿ èŠã§ãã çŸåšãã¹ã¿ã€ã«ãšãã¹ããã©ã¯ãã£ã¹ã®äž¡æ¹ã®ã«ããŽãªã«çŽ250ã®ç°ãªããã¹ãããããŸãããã¿ã€ããã§ãã¯ã¯ãããŸããã Mypyã¯ãããæ±ããŸããããããšã¯äœã®é¢ä¿ããããŸããã
ç§ãã¡ã®ãªã³ã¿ãŒã«ã¯åŠ¥åã¯ãããŸãã ã ãããã¯ããããªãããæ¬åœã«ããããã®ãªãã§ããããšããã«ããŽãªã®ã«ãŒã«ã¯ãããŸããã ããããç§ãã¡ã¯åžžã«å³ãã話ããŸã-æªãã®ã§ããããããŸããã ãããã人ã ã¯æ¥ãŠãããããååãšããŠå¯èœãªãŠãŒã¹ã±ãŒã¹ã2.5ãããŸãïŒããšèšããŸãã ãã®ãããªå Žåã¯ããã®è¡ã¯ãªã³ã¿ãŒããããç¡èŠããããšãèš±å¯ããŠããããšãæ確ã«æžããŸããããã®çç±ã説æããŠãã ããã ãªãå¥åŠãªç·Žç¿ãèš±å¯ããã®ãããªããããããŠããã®ãã«ã€ããŠã®ã³ã¡ã³ãã§ãªããã°ãªããŸããã ãã®ã¢ãããŒãã¯ãã³ãŒãã®ææžåã«ã圹ç«ã¡ãŸãã
æãå³ãããªã³ã¿ãŒã¯èšå®ïŒWIPïŒãå¿ èŠãšããŸãã ã ãŸã èšå®ã¯ãããŸããããããåãé€ããããšæããŸãïŒèªç±ãããã°ããŠãŒã¶ãŒã¯ç¢ºå®ã«ãªã³ã¿ãŒãæ£ããåäœããªãããã«èšå®ããŸãã
é©åãªããŒã«ã¯èšå®ãå¿ èŠãšããŸãã-é©åãªããã©ã«ãå€ããããŸãã
ãã®ã¢ãããŒãã«ãããã³ãŒãã¯äžè²«æ§ããããå°ãªããšãçè«äžã¯ãã¹ãŠã®ãŠãŒã¶ãŒã«å¯ŸããŠåãããã«æ©èœããŸãã ç§ãã¡ã¯ãŸã ããã«åãçµãã§ãããèšå®ããããŸãããããŒã«ã䜿çšããŠèªåçšã«ã«ã¹ã¿ãã€ãºããããšãã§ããŸãã
ç§ãã¡ã¯èª°ã«äŸåããŠããŸããïŒ
å€æ°ã®ããŒã«ããã
- ãã¬ãŒã¯8 ã
- Eradicateã¯ãã³ãŒãå ã®ã³ã¡ã³ãã¢ãŠãããããã©ã°ã¡ã³ããèŠã€ããŠåé€ããã¯ãŒã«ãªãã©ã°ã€ã³ã§ãããããžã§ã¯ãã«ãããã³ãŒããä¿åããã®ã¯æªãããã§ãã èš±å¯ãããŠããŸããã
- Isortã¯ãã€ã³ããŒããæ£ãããœãŒãããããã«åŒ·å¶ããããŒã«ã§ãïŒé çªãã€ã³ãã³ããçŸããåŒçšã
- Banditã¯ãã³ãŒãã»ãã¥ãªãã£ãéçã«ãã§ãã¯ããããã®åªããããŒã«ã§ãã æç·ãã¹ã¯ãŒããã³ãŒãå
ã§ã®
assert
äžåšçšãªäœ¿çšãPopen
ãsys.exit
åŒã³åºããsys.exit
ããããã¯ãã¹ãŠäœ¿çšã§ããªããšèšããŸãããå¿ èŠã«å¿ããŠãçç±ãæžãããã«æ±ããŸãã - ãããŠãæ¬åŒ§ãåŒçšç¬Šãã«ã³ãããã§ãã¯ãã20以äžã®ãã©ã°ã€ã³ ã
äœããã§ãã¯ããŠããŸããïŒ
ç§ãã¡ã䜿çšããã³å®æœããã«ãŒã«ã®ã°ã«ãŒãã¯4ã€ãããŸãã
è€éããæ倧ã®åé¡ã§ãã è€éãã¯ããããŸããããã³ãŒãã«ã¯è¡šç€ºãããŸããã ç§ãã¡ã¯æ¯æ¥äœæ¥ããã³ãŒããèŠãŠãããã¯è€éã§ã¯ãªãããã§ã-ãããåããèªãã§ããã¹ãŠãåäœããŸãã ããã§ã¯ãããŸããã åçŽãªã³ãŒãã¯ããªãã¿ã®ã³ãŒãã§ãã è€éãã«ã¯ããã¹ãããæ確ãªåºæºããããŸãã åºæºèªäœã«ã€ããŠ-åŸã§ã ã³ãŒããåºæºã«éåããŠããå Žåããã³ãŒãã¯è€éã§ããæžãçŽããŠãã ããïŒã
å€æ°ã®ååã¯æªè§£æ±ºã®ããã°ã©ãã³ã°åé¡ã§ãã 誰ããã€ã©ã®ãããªæèã§èªãã®ãã¯äžæã§ãã ååãã§ããéãäžè²«æ§ã®ãããããããããã®ã«ããããåªããŠããŸãããè©ŠããŠããŸãããåé¡ã¯ãŸã å®å šã«ã¯è§£æ±ºãããŠããŸããã
äžè²«æ§ãä¿ã€ããã«ãåçŽãªã«ãŒã«ããããŸã-ã©ãã§ãåãããšãæžããŸãã æ€èšŒæžã¿ã®ã¢ãããŒããããå Žåã¯ãããããå Žæã§äœ¿çšããŠãã ããã 奜ããšå¥œãŸãããšã«ããããããäžè²«æ§ãããéèŠã§ãã
ãã¹ããã©ã¯ãã£ã¹ã®ã¿ã䜿çšããããã«ããŸãã äžéšã®ãã©ã¯ãã£ã¹ãããŸãè¯ããªãããšãããã£ãŠããå Žåããã®äœ¿çšãçŠæ¢ããŸãã éçºè ãçŠæ¢ãããŠããæ £è¡ã䜿çšãããå Žåãç§ãã¡ã¯åœŒããã®è°è«ãæåŸ ããŸãã ããããã説æã®éçšã§ããªããããæªãã®ããç解ãããã§ãããã
è€éããšã¯äœã§ããïŒ
è€éãã«ã¯ç¹å®ã®ææšãããããããèŠãŠããããé£ãããã©ãããå€æã§ããŸãã ãããããããŸãã
埪ç°çè€éæ§ -誰ãã奜ã埪ç°çè€éæ§ã ããã¯ãã³ãŒãå ã§å€æ°ã®ãã¹ãããã
if
ã
for
ããã®ä»ã®æ§é ãæ€åºããã³ãŒãã®åå²ãå€ãããããšãšèªã¿åããå°é£ã§ããããšã瀺ããŸãã åã蟌ãŸããã³ãŒãã§ã¯ããã¹ãŠãæªãã§ããããªãã¯èªãã§ãèªãã§ãèªãã§-æ»ã£ãŠãèªãã§ãèªãã§ãèªãã§-ãžã£ã³ãããŠãå¥ã®ãµã€ã¯ã«ã«å ¥ããŸãã ãã®ãããªã³ãŒããäžããäžã«å®å šã«æž¡ãããšã¯äžå¯èœã§ãã
åŒæ°ãã¹ããŒãã¡ã³ããããã³æ»ãå€ã ãããã¯å®éçãªææšã§ããé¢æ°ãŸãã¯ã¡ãœããã«å«ãŸããåŒæ°ã®æ°ããã®é¢æ°ã®æ¬äœãŸãã¯ã¹ããŒãã¡ã³ããšæ»ãå€ã®ã¡ãœããã«å«ãŸããåŒæ°ã®æ°ã
çµåãšçµåã¯ãOOPã®äžçã§äººæ°ã®ããææšã§ãã åé床ã¯ãå éšã®ã¯ã©ã¹ã®ã€ãªããã瀺ããŠããŸãã ããšãã°ãã¯ã©ã¹ããããå éšã§ãã¹ãŠã®ã¡ãœãããšããããã£ïŒå®£èšãããã¹ãŠïŒã䜿çšããŸãã ããã¯ãå éšã§é«ãæ¥ç¶æ§ãæã€åªããã¯ã©ã¹ã§ãã ã«ãããªã³ã°ãšã¯ãã·ã¹ãã ã®ããŸããŸãªéšåïŒã¢ãžã¥ãŒã«ãšã¯ã©ã¹ïŒãã©ãã ãæ¥ç¶ãããŠãããã§ãã ã¯ã©ã¹å ã§æ倧ã®æ¥ç¶æ§ãå®çŸããå€éšã§æå°ã®æ¥ç¶æ§ãå®çŸããããšèããŠããŸãã ãã®åŸãã·ã¹ãã ã¯ç°¡åã«ç¶æãããããŸãæ©èœããŸãã
ãžã§ãŒã³ãºã®è€éã -ç§ã¯ãã®ã¡ããªãã¯ãåããŸããããããã¯ç匟ã ããã§ãïŒ ãžã§ãŒã³ãºã®è€éãã¯ãç·ã®è€éãã決å®ããŸããç·ãè€éã«ãªãã»ã©ã人éã®çæèšæ¶ã¯äžåºŠã«5ã9å以äžã®ãªããžã§ã¯ããåŠçã§ããªããããç解ãé£ãããªããŸãã ããã¯ãããããã©ãŒè²¡åžã§ãã
ãããã®éèŠãªã¡ããªã¯ã¹ãšä»ã®ããã€ãã®ã¯ããã«å€§ããã¡ããªã¯ã¹ãèŠãŠãã³ãŒããé©åãã©ãããå€æããŸãã ç§ãã¡ã®ç解ã§ã¯ã è€éãã¯æ»ã§ãã
æ»ã®é£æ床
é£ããã¯ãç§ãã¡ãã©ã€ã³ãæžãããšããäºå®ããå§ãŸããŸãããããã¯ãŸã è¯ãã§ãã ããããããžãã¹ããã£ãŠæ¥ãŠãäŸ¡æ Œã2åã«ãªã£ããšèšãã2ãæããŸãããã®æç¹ã§ããžã§ãŒã³ãºã³ã³ãã¬ãã·ãã£ã¯ãããããªããã©ã€ã³ãè€éãããŠãããžãã¯ãå€ããããšèšããŸãã
ããŠãæ°ããå€æ°ãéå§ãããšãé¢æ°è€é床ã¢ãã©ã€ã¶ãŒã¯æ¬¡ã®ããã«èšããŸãã
- ããããäžå¯èœã§ã-é¢æ°å ã®å€æ°ãå€ãããŸãã
æ°ããã¡ãœãããäœæããåŒæ°ãæž¡ããŸãã ããã§ãé¢æ°ã®åŒæ°ã®æ°ããŸãã¯ã¯ã©ã¹å ã®ã¡ãœããã®æ°ã確èªãããšããããäžå¯èœã§ããããšãããããŸã-ã¯ã©ã¹ã¯è€éãããŠã2ã€ã®éšåã«åå²ããå¿ èŠããããŸãã å¥ã®ã¯ã©ã¹ã匷調衚瀺ããŠã¯ã©ãã·ã¥ããŸããã ããã§ã¯ã©ã¹ãå¢ããŠãã¹ãŠãæ£åžžã«ãªããŸãããã ã¢ãžã¥ãŒã«ã®è€éãããã§ãã¯ãããšãã¢ãžã¥ãŒã«ãè€éãããŠãªãã¡ã¯ã¿ãªã³ã°ãå¿ èŠã§ãããšå ±åãããŸãã ãªãïŒïŒ
ããã¯èŠãã¿ãšåŒã°ããŸãã ã ããç§ã¯ãªã³ã¿ãŒãããªããèŠãããã¹ãã ãšèšã£ãŠããŸãã 1è¡ã«2ãæããããšããå§ãã ã·ã¹ãã å šäœããªãã¡ã¯ã¿ãªã³ã°ããŸãã ã è€éãã¯æ»ã®ããã«åºãããå¯èœãªãã¹ãŠãã«ããŒãããããå°ããªã³ãŒããè¿œå ãããšã¢ãžã¥ãŒã«å šäœããªãã¡ã¯ã¿ãªã³ã°ãããŸãã
ããªãã¡ã¯ã¿ãªã³ã°ãå¿ èŠã -ããã«ãããã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ã§ããŸãã ãã 座ã£ãŠããããšã¯ã§ããŸããïŒãç§ã¯ãã®ã³ãŒãã«è§Šããªãã§ãããŸãããããã§ããã ãããããã€ãä»ã®å Žæã§ã³ãŒããå€æŽããè€éãã®æ»ã觊ããªãã£ãã¢ãžã¥ãŒã«ãããµãããããªãã¡ã¯ã¿ãªã³ã°ããå¿ èŠããããŸãã ãªãã¡ã¯ã¿ãªã³ã°ã¯åªããŠãããšæããŸãããããå€ããã°å€ãã»ã©ãã·ã¹ãã ã®åäœã¯å®å®ããåäžããŸãã ãããŠãä»ã®ãã¹ãŠã¯äž»èŠ³çã§ãïŒ
ããã§ã¯å³ã«ã€ããŠè©±ããŸãããã ããã¯å šäœçãã€ã€ã³ã¿ã©ã¯ãã£ããªéšåã§ãïŒ
ããªããŒ
ãµããŒãããŸããããã³ã¡ã³ãã¯å ¬éãããŠããŸãã ãŸããååã¯è€éã§æªè§£æ±ºã®åé¡ã§ããããšãæãåºãããŠãã ããã å€æ°ã®ååã®ä»ãæ¹ãããã£ãŠäºãããšã¯ã§ããŸãããå°ãªããšãæãããªééããããªãããã«ããããã€ãã®ã¢ãããŒãããããŸãã
åå
ã©ã®ããã«å¥œãã§ããïŒ varãvalueãitemãobjãdataãresult ããŒã¿ãšã¯ïŒ äžéšã®ããŒã¿ã çµæãšã¯äœã§ããïŒ äœããã®çµæã å€ãã®å Žåã çµæå€æ°ãšç解ã§ããªãã¯ã©ã¹ã®ããã€ãã®å°å³ãªã¡ãœããã®åŒã³åºããèŠãŸã-ãããŠãç§ã¯æãïŒããã®çµæã¯äœã§ããïŒ ãªã圌ã¯ããã«ããã®ã§ããïŒã
ç§ã«å察ãã å€ã¯å®å šã«æ®éã®å€æ°åã§ãããšèšãéçºè ãããããããŸãïŒ
- ç§ã¯åžžã«ããŒãšå€ã䜿çšããŸãïŒ
- ãªãããŒãšå€ã䜿çšããªãããããŒã¯ååã§ãããå€ã¯å§ã§ãããšèšãïŒ ãªãfirst_nameãšlast_nameã«ååãä»ããããšãã§ããªãã®ã-ä»ãã³ã³ããã¹ãããããŸãã
éåžžã人ã ã¯åæããŸããããšã«ããè°è«ããŸãã ããã¯éåžžã«å šäœçãªããšã§ããå°ãªããšã3人ãç§ãšäžç·ã«ããã«ã€ããŠè°è«ããããã«1æéã®äººçãéãããŸããã
å€æ°ã«1æåã§ååãä»ããŠã倧äžå€«ã§ããïŒ
ããšãã°ã q ïŒ ç§ãã¡ã¯çãå€å žçãªã±ãŒã¹ãç¥ã£ãŠããŸãïŒ
for i in some_iterable:
ç§ã¯äœã§ããïŒ Cã§ã¯ãããã¯æšæºçãªæ £è¡ã§ããããã¹ãŠãããããæ¥ãŠããŸãã ããããPythonã§ã¯ãã³ã¬ã¯ã·ã§ã³ãšã€ãã¬ãŒã¿ãŒã ã³ã¬ã¯ã·ã§ã³ã«ã¯ååã®ããèŠçŽ ãå«ãŸããŠããŸã-äœããã®æ¹æ³ã§ããããåŒã³åºããŸãããã
éçºè ã®åæ°ã¯ãå€æ°iãxãyãzã®åŒã³åºãã¯æ£åžžã§ãããšèããŠããŸãã
ååãäžæåã§åŒã¶ããšã¯ã§ããªããšæããŸãã ããå€ãã®ã³ã³ããã¹ããå¿ èŠã§ãããéçºè ã®åŸåãç§ã«åæããã®ã¯è¯ãããšã§ãã Cã§ããããŸã æŽå²çéºç£ã®ããã«äœããã®åœ¢ã§èš±å®¹ãããå ŽåãPythonã§ã¯ããã¯éåžžã«å€§ããªåé¡ã§ããããããè¡ãå¿ èŠã¯ãããŸããã
äžè²«æ§
å€ãã®æ¹æ³ã®äžãã1ã€ã®æ¹æ³ãéžæããŠãããããããšèšããŸãããã ãããè¯ããæªããã¯ããã¯ãåé¡ã§ã¯ãããŸããããåã«äžè²«ããŠããŸãã
Python 3ã«ã€ããŠã®ã¿è©±ããŠããã®ã§ãã¬ã¬ã·ãŒã¯ãŸã£ããèæ ®ãããŠããŸããã
ç§ã¯åŒæ°ãæã£ãŠããŸãïŒäœãããç¶æ¿ãããšããäœããç¥ã£ãŠããã¹ãã§ã-芪ã®ååãèŠããšããã§ãããã é¢çœãã®ã¯ãããããªããžã§ã¯ãã§ããå Žåãé€ããéåžžã¯èŠªã®ååã衚瀺ãããããšã§ãã ãããã£ãŠãç§ã¯èªåã®ããã«ã«ãŒã«ãçå®ããŸãããã¯ã©ã¹ãæžããšããç§ã¯äœãããç¶æ¿ããŸã-ç§ã¯åžžã«èŠªã®ååãæžããŸãã ãããäœã«ãªããã¯é¢ä¿ãããŸãã-ã¢ãã«ããªããžã§ã¯ãããã®ä»ã
Class Some(object)
ãŸãã¯
class Some
ãäœæããéžæè¢ãããå Žåã¯ãæåã®ãã®ãéžæããŸãã äžæ¹ã§ã¯ãåžžã«ç¶æ¿å ãæ瀺çã«èšè¿°ããŠããããšã瀺ããŠããŸãã äžæ¹ãç¹å®ã®åé·æ§ã¯ãããŸãããããã€ãã®è¿œå ã®ããŒã¹ãããŒã¯ã§äœã倱ãããŸããã
éçºè ã®3åã®2ã¯2çªç®ã®ãªãã·ã§ã³ã«ç²ŸéããŠããããã®çç±ããç¥ã£ãŠããŸãã ç§ã®ä»®èª¬ïŒãã¹ãŠã¯ãPythonã®2çªç®ã®ããŒãžã§ã³ãã3çªç®ã®ããŒãžã§ã³ã«é·ãé移è¡ããŠããã®ã§ã3çªç®ã®Pythonã§æžããŠããããšã瀺ããŠããŸãã 仮説ãã©ã®ããã«æ£ããã®ãã¯ããããŸããããããã ãšæããŸãã
Fã©ã€ã³ã¯ã²ã©ãã§ããïŒ
åçãªãã·ã§ã³ïŒ
- ã¯ãïŒã³ã³ããã¹ãã倱ãããã³ãã¬ãŒãã«ããžãã¯ãé 眮ãããªã³ãããŸãã-ïŒ38ïŒ ïŒã
- ããïŒ åœŒãã¯å¥è·¡ã§ãïŒ -ïŒ62ïŒ ïŒã
fã©ã€ã³ã¯ã²ã©ããšãã仮説ããããŸãã 圌ãã¯äœã§ãå ¥ããŸãïŒ f-lineã¯
.format
ãšåãã§ã¯ãªããéãã¯åçã§ãã ç¹å®ã®ãã³ãã¬ãŒãã宣èšããŠãããã©ãŒãããããå Žåã2ã€ã®ã¢ã¯ã·ã§ã³ãå¥ã ã«å®è¡ããŸããæåã«ãã³ãã¬ãŒããå®çŸ©ãã次ã«ãã©ãŒãããããŸãã f-lineã宣èšãããšãã2ã€ã®ã¢ã¯ã·ã§ã³ãåæã«å®è¡ããŸãããã³ãã¬ãŒããããã«å®£èšããåæã«ãã©ãŒãããããŸãã
fã©ã€ã³ã«ã¯2ã€ã®åé¡ããããŸãã f-lineã®ãã³ãã¬ãŒãã宣èšããŸãããããã¹ãŠæ©èœããŸãã ãããŠããã³ãã¬ãŒãã2è¡äžã«ç§»åããããå¥ã®æ©èœã«ç§»åããããšã«ããŸã-ãããŠãã¹ãŠãå£ããŸãã çŸåš ã æååããã©ãŒãããããããšãèš±å¯ããã³ã³ããã¹ãã¯ãªã ãããããæ£ããåŠçããããšã¯ã§ããŸããã fã©ã€ã³ã®2çªç®ã®å€§ããªåé¡ïŒã²ã©ãããšãããããšãã§ããŸã- ããžãã¯ããã³ãã¬ãŒãã«è²Œãä»ããŸãã ãŠãŒã¶ãŒåãšãHelloããšããåèªãåçŽã«æ¿å ¥ããè¡ããããšããŸã-ããã¯æ£åžžã§ãã ç¹ã«ã²ã©ããã®ã¯ãããŸãããããŠãŒã¶ãŒåã倧æåã§ããããšãããã
username.title()
ãã¿ã€ãã«ã±ãŒã¹ã«å€æãã
username.title()
ãã³ãã¬ãŒãã«çŽæ¥æžã蟌ãããšã«ã
username.title()
ã 次ã«ãæ¡ä»¶ããµã€ã¯ã«ãã€ã³ããŒãããã³ãã¬ãŒãã«è¡šç€ºãããŸãã ãããŠãphpã®ä»ã®ãã¹ãŠã®éšåã
ããããã¹ãŠã®åé¡ããã f-lineã¯æªããããã¯ã§ãããšèšããããåŸãŸããã é¢çœãã®ã¯ãf-lineã ããç§ãã¡ã«é©ããŠãããšããã±ãŒã¹ããªãããšã§ãã éåžžãä»»æã®ãã©ãŒããããé©ããŠããŸããã
.format
ãéžæããŸãã-ä»ã®ãã¹ãŠã¯äžå¯èœã§ã-
%
ãf-linesããããŸããã
.format
ã®äœæ¥ããªã³ããããŸããããã¯ãäžã«åŒçšç¬Šãå ¥ããŠãå€æ°ã®ååãŸãã¯é åºãèšè¿°ã§ããããã§ãã
ã¬ããŒãäžãf-lineã®å¯ŸæŠçžæã®æ°ã¯33ïŒ ãã38ïŒ ã«å¢å ããŸãããããã¯ãããã§ãããåå©ã§ãã
æ°å
次ã®ãããªæ°åã奜ãã§ããïŒ
final_score = 69 * previous result / 3.14
ã ããã¯æšæºçãªã³ãŒãè¡ã®ããã§ããã69ãšã¯äœã§ããïŒ ãã®ãããªè³ªåã¯ãç§ããã°ããåã«æžããã³ãŒããèŠããšããçºçãããã®ãšãã®ãããŒãžã£ãŒã¯æ¬¡ã®ããã«è¿°ã¹ãŠããŸãã
-147ãæããŠãã ããã
- ãªã147ã§ããïŒ
- ç§ãã¡ã¯ãã®ãããªé¢çšãæã£ãŠããŸãã
ä¹ç®ããŠå¿ããŠããŸã£ãããŸãã¯é·ãéä¿æ°ã®å€ãéžæããŠãã¹ãŠãæ©èœããããã«ãã-ãããŠããããã©ã®ããã«æŸãäžããã®ãããããŠãã®çç±ãå¿ããã éèŠãªç 究äœæ¥ãç¡é¡ã®æ°ã®åŸãã«é ããããŸãŸã§ããããšãå€æããŸããã ç§ã¯ãã®çªå·ãäœã§ãããããç¥ããŸããããåŸã§ã³ãããããããšã«ãã£ãŠãã©ãããããããããèŠã€ããŠãèŠããŠã埩å ããããšãã§ããŸãã
ã©ãããŠéãããšãããªãã®ã§ããïŒååãšããã¥ã¡ã³ãã䜿çšããŠããã¹ãŠã®è€çŽ æ°ãç¬èªã®å€æ°ã«å ¥ããŠãã ããã ããšãã°ãæ°å€69ã®å Žåãããã¯åžå Žã®å¹³åçãªææšã§ãããå®æ°ã«ã¯ååãšã³ã³ããã¹ããããããšãèšè¿°ããŸãã ç§ã¯ãã®ãããªç 究ã®çŸå Žã§çµ¶ãéãªããšã£ãã³ã¡ã³ããæžããŸãã ç 究ãå°æ¥å€æŽãããå Žåã¯ãããŒã¿ãæŽæ°ããŸãã
ãããã£ãŠãããžãã¯ãã³ããŒãã³ãŒããééããŠå éšããè€éåããªãããšãä¿èšŒããŸãã 圌ãã¯åè¡ã®è€éãããã§ãã¯ãããããã«çªå·4766ããããŸããããã¯äœãªã®ãããããŸãããèªåã§æŽçããŠãã ããïŒããšèšããŸããç§ã«ãšã£ãŠããã¯çŽ æŽãããçºèŠã§ããã
ãã®çµæãããã«åŸãå¿ èŠãããããšã«æ°ä»ããŸãããã³ãŒãå ã®ããžãã¯ãã³ããŒãèŠéãããšã¯ãããŸããã ç§ãã¡ã®ååã®ã»ãŒ100ïŒ ãç§ãã¡ã«åæãã圌ãããã®ãããªçªå·ã䜿ããªãã®ã¯è¯ãããšã§ãã
ãã ããäŸå€ããããŸãããããã¯ã-10ãã10ãŸã§ã®æ°åã100ã1000ãªã©ã®æ°åã§ããåã«èŠã€ããããšãå€ãããããããªããšé£ããããã§ãã ç§ãã¡ã¯å³ããã§ããããµãã£ã¹ãã£ãã¯ã§ã¯ãªã ãå°ãèããŸãã
ã@staticmethodãã䜿çšããŠããŸããïŒ
staticmethodãšã¯äœããèããŠã¿ãŸãããã ãªãPythonãªã®ãçåã«æã£ãããšã¯ãããŸãããïŒ ããŸããã 次ã®ãããªçŸããPylintããããŸããã
- èŠãŠã
self
ã
cls
ã䜿çšããŠããªã -staticmethodãå®è¡ããŠãã ããïŒ
- ããŠãããªã³ããç§ã¯staticmethodãè¡ããŸãã
ããããç§ã¯åå¿è ã«Pythonãæããéçã¡ãœãããšã¯äœãããªãå¿ èŠãªã®ããå°ããŸããã ç§ã¯çããç¥ããŸããã§ããããããŠããããã®ãããªã¯ã©ã¹ã§ãããäœããèµ·ãã£ãŠãããšããçç±ã ãã§ãé¢æ°ã§åããã®ãæžãããšãã§ããããéåžžã®é¢æ°ã§
self
ã䜿çšããããšãã§ãããã©ããèããŸããã ãªãstaticmethodã³ã³ã¹ãã©ã¯ããå¿ èŠãªã®ã§ããïŒ
ç§ã¯è³ªåãã°ãŒã°ã«ã§æ€çŽ¢ããŸãããããŠãµã®ã®ç©Žã®ããã«æ·±ãããšãããããŸããã staticmethodã奜ãŸããŠããªãããã°ã©ãã³ã°èšèªã¯ä»ã«ããããããããŸãã ãããŠãçæ§ç-staticmethodã¯ãªããžã§ã¯ãã¢ãã«ãç Žå£ããŸãã ãã®çµæã staticmethodã¯ããã§ã¯ãªãããšã«æ°ä»ããŸããã ããŠãstaticmethodãã³ã¬ãŒã¿ã䜿çšãããšããªã³ã¿ãŒã¯ãããããããããªããããªãã¡ã¯ã¿ãªã³ã°ïŒããšèšããŸãã
ã»ãšãã©ã®éçºè ã¯ç§ã«å察ããŸãããçŽåæ°ã¯ãŸã staticmethodã®ä»£ããã«éåžžã®ã¡ãœãããŸãã¯éåžžã®é¢æ°ãæžãæ¹ãè¯ããšèããŠããŸãã
__initã®ããžãã¯__ãRu-è¯ããæªããïŒ
ããã¯ç§ã®ãæ°ã«å ¥ãã®ãããã¯ã§ãã 確ãã«ãæ°ããããã±ãŒãžãäœæããŠäœããã®æ¹æ³ã§åŒã³åºããšã__ init __ãRuãäœæãããäœãå ¥ããã®ãçåã«æãã§ããããïŒ __init __ãRuã«äœãå ¥ãããããããŠäœã-ãã¡ã€ã«ã䞊ã¹ãŠïŒ ç§ã«ãšã£ãŠãããã¯äºçŽ°ãªè³ªåã§ã¯ãªããç§ã¯ãã€ãè¿·ã£ãŠããŸãããããããæãéèŠãªããšã§ããããïŒ ããããç§ã¯èãã-ããããå察ã«ãç§ã¯æãç解å¯èœãªæèã§æãéèŠãªãã®ã眮ãã§ãããã __init __ãRuã«äœããå ¥ããŠãããããã¹ãŠã€ã³ããŒããããšã埪ç°ã€ã³ããŒããæªãããšãããããŸãã
ç§ã¯ããŸããŸãªäººæ°ã®ããã©ã€ãã©ãªãèŠãŠããããã®__init __ãRuãç»ããåºæ¬çã«ã¯ã¬ããŒãžäºææ§ãŸãã¯åŸæ¹äºææ§ãããããšã«æ°ä»ããŸããã ç§ã«ãšã£ãŠããã®è³ªåã¯ãå€ãã®ãµãããã±ãŒãžãå«ã倧ããªããã±ãŒãžãäœæãå§ãããšãã«æ¥æ¿ã«çºçããŸãã-ããªãã¯è¿·åã«ãªããŸãã , . Python, , , __init__. , 90% .
â , API, , - , , ? , , . API . , __init__. - : , , .
,
I_CONTROL_CODE
â . , . , , __init__. â . , , , - , .
hasattr ?
hasattr ? , , Python â . hasattr , ().
, , hasattr , , . , hasattr, , . - , Python -, hasattr . , . getattr « , ». hasattr â getattr, exception .
50 50 â , , .
, layer-linter . 圌ã¯äœãããŠããŸããïŒ : , , , . , - . - . .
cohesion . , . Cohesion , . False Positive , â , , .
vulture Python . - , Python , . ohesion.
Radon , : Halstead , Maintainability Index , . , â .
Final type
Final- Python. Typing Extensions, , . , - , â , . , - - , ? å¿ èŠãããŸããã . - â , , , .
Gratis
, .
, .
, . , . , Python- , .
, Moscow Python Conf++ , . , , Python-.
. . , , , .