Pythonã§ã³ãŒããæžããŠãããšãããã®æžãæ¹ãšãã®æžãæ¹ãã©ã£ã¡ããããã ããïŒããšæ©ãå Žé¢ããããŸããããå®ã¯ã©ã¡ãã«ãçç±ããããããã®ãšã³ãžãã¢ã§ãæèŠãåãããããŒããããã€ããããŸãã
ãããããè³åŠäž¡è«ã³ãŒããã®èæ¯ã«ããèãæ¹ãç¥ããšãã¬ãã¥ãŒã§ã®è°è«ã建èšçã«ãªããèªåã®ã³ãŒãã«ãããªãããæžãããããèªããæ ¹æ ãçãŸããŸããèªã¿ããããããŒã ã§ãæãã«ãããæŽç·ŽãããPythonã³ãŒããæžããæªæ¥ãæã«å ¥ããŸããâš
ãããã玹ä»ãã4ã€ã®ã¹ã¿ã€ã«ã¯ãã©ã¡ããæ£ããããæ±ºãããã®ã§ã¯ãããŸãããAãšBã®äž¡æ¹ã«çç±ããããæèãããŒã ã®æ¹éã«ãã£ãŠæé©è§£ã¯å€ãããŸãã
ãAã®æžãæ¹ãããŠãã人ã¯äœãåãã£ãŠããªãããšé ããªãã«æ±ºãã€ããã®ã§ã¯ãªããããªãã»ã©ãããããèãæ¹ãããã®ãããšåŒãåºããå¢ããå§¿å¢ã§èªã¿é²ããŠãããŸããããð§°
ãããªã³ãŒããèããŠã¿ãŸãã
def level_up(exp, level):
  if exp >= 100:
    level += 1
  return level
ããã«å¯ŸããŠãelse ãæç€ºçã«æžãã¹ãããæžããªãæ¹ãã¹ãããªããŠããããæèŠãåããããã€ã³ãã§ãã
ã©ã¡ãã«ãäžçãããŸããããããŒã ã§æ¹éãåãããŠããã®ãäžçªã§ããð€
åã倿°ã«äœåºŠãå€ãä»£å ¥ããã¹ã¿ã€ã«ã§ãã
def level_up(exp, level):
  if exp >= 100:
    level = level + 1 # â åä»£å ¥
  return level
new_level ãªã©å¥åã«ããã°ãæå³ãæç¢ºã«ãªã颿°åããã°ã©ãã³ã°å¯ãã®èšèšã§ã¯ã倿°ã¯äžå€ã§ããã¹ãããšããèãæ¹ã匷ããRustã®ãããªèšèªã¯å代å
¥ãæç€ºãã mut ããŒã¯ãŒããå¿
é ã«ããŠããŸããPythonã¯çŠæ¢ããŠããŸãããããããŠé¿ããã¹ã¿ã€ã«ãäžã€ã®èšèšå€æã§ããðš
颿°ã®åé ã§æ¡ä»¶ããã§ãã¯ããŠãæºãããªãå Žåã¯ããã« return ããã¹ã¿ã€ã«ã§ãã
def level_up(exp, level, x, y):
  if exp < 100:
    return # æ©æãªã¿ãŒã³
  # ããããè€éãªããžãã¯...
  db.save(level)
åç»ã®äœè ã¯æ©æãªã¿ãŒã³æŽŸãšã®ããšã§ããããããçµå±ã¯é¢æ°ã®è€éããããŒã ã®æ¹é次第ãçã颿°ãªãæ©æãªã¿ãŒã³ãé·ããŠåå²ãå€ã颿°ãªãæç€ºçãªelseããšäœ¿ãåããã®ãè³¢ãéžæã§ããâïž
颿°ã®åŒæ°ãæ»ãå€ã«åæ å ±ãæžãã¹ã¿ã€ã«ã§ãã
def level_up(exp: int, level: int) -> int:
  if exp >= 100:
    level += 1
  return level
è¿å¹Žã¯åãã³ãæšé²ã®æµãã匷ããFastAPIãPydanticãªã©åæ å ±ãæŽ»çšããã©ã€ãã©ãªãå¢ããŠããŸããäžæ¹ã§ãPythonããããä¿ã¡ããããšããæèŠãæ ¹åŒ·ãããããžã§ã¯ãã®èŠæš¡ãç®çã§å€æããã®ããã¿ãŒã§ããð¯
4ã€ã®ããŒããèŠãŠããŠåããã®ã¯ãã³ãŒãã¹ã¿ã€ã«ã«ãçµ¶å¯Ÿã®æ£è§£ãã¯ãªããšããããšãéèŠãªã®ã¯ãèªåãéžãã ã¹ã¿ã€ã«ã«ããªãããããã®ããã説æã§ããããšããããŠä»äººã®éžæã«ãçç±ããããšèªããããããšã§ãã
ã¬ãã¥ãŒæåãæ ¹ä»ããããŒã ã§ã¯ãããããè°è«ãæ¥åžžçã«è¡ãããçµæãšããŠã³ãŒãå質ãåºäžããããŠãããŸãã仿¥ç޹ä»ããããŒãã¯ããã²ããŒã ã®å匷äŒãã©ã³ãã¿ã€ã ã®è©±é¡ã«ããŠã¿ãŠãã ãããð±
ããããã³ãŒãã¹ã¿ã€ã«ã®ãèãæ¹ã®åŒãåºãããå¢ããã«ã¯ãæžç±ã§äœç³»çã«åŠã¶ã®ãè¿éã§ããPythonã«éãããèšèšææ³ã»ãªãŒããã«ãªã³ãŒãã®ååãåŠã¹ãåèãå³éžããŸãããð
ã倿°åã»ã³ã¡ã³ãã»åå²ã®æžãæ¹ããäœç³»çã«è§£èª¬ããå€å žäžã®å€å žãä»åã®ããŒãå šãŠã«éãããèªã¿æç®ç·ãã身ã«ã€ããŸãã
åãã³ãã»ç¹æ®ã¡ãœããã»ãžã§ãã¬ãŒã¿ãŒãªã©ãPythonãããæžãæ¹ãæ·±ã解説ããåèããPythonã§ã©ãæžãããã®å€æè»žã身ã«ã€ããŸãã
æ©æãªã¿ãŒã³ã»åãã³ãã»äŸå€åŠçãªã©ãçŸå Žã§é »åºãã倿ãã€ã³ããé ç®å¥ã«æŽçããã©ãæžããè¿·ã£ããšããã®å¿åŒ·ã峿¹ã§ãã
ãåãã³ãŒããããèªã¿ãããã³ãŒããã«è²ãŠãæè¡æžããã¹ãã®æ·±ãã»å€æ°ã®åœåã»åå²ã®æŽçãªã©ãè³åŠäž¡è«ãã€ã³ãã®å€æè»žãäœç³»åãããŠããŸãã
ã¯ã©ã¹ã»é¢æ°ã®è²¬ååæ ãåœåãearly returnã®æ¯éãªã©ãèšèšå€æã®ãã¬ãŒã ã¯ãŒã¯ãåŠã¹ã1åãã¬ãã¥ãŒã§ã®èª¬åŸåãå€ãããŸãã
ã³ãŒãã£ã³ã°èŠçŽãããã¥ã¡ã³ãåããã®ããã¹ãã§ããBlackã»Ruffã»mypy ãªã©ã®ãã©ãŒããã¿ã»ãªã³ã¿ãå°å ¥ããã°ãæ©æ¢°çã«ã¹ã¿ã€ã«ãæããããŠè°è«ã³ã¹ããäžãããŸãã
颿°ã®èп𡿬¡ç¬¬ã§ããçããŠã¬ãŒãç¯ã1ã2åãªãæ©æãªã¿ãŒã³ãåå²ãè€éã§ç¶²çŸ æ§ã匷調ããããªãelseæç€ºãšäœ¿ãåããã®ãããããããèªã¿æã«ãšã£ãŠã©ã¡ããåããããããããåºæºã«ããŸãããã
ã¯ããæ®µéçãªå°å
¥ãå¯èœã§ããéèŠãªé¢æ°ãå
¬éAPIããä»ãå§ããåŸã
ã«ç¯å²ãåºããã®ããããããmypyã®--strictãªãã·ã§ã³ã䜿ãåã«ããŸãã¯ç·©ãã®èšå®ããå§ãããšæ«æãã«ããã§ãã
æ°ãããªã¹ããçæãããã¿ãŒã³(new_list = [x*2 for x in old_list])ããmap/filterã䜿ããšãå代å
¥ãé¿ãã€ã€å®£èšçã«æžããŸããå¯èªæ§ãšããã©ãŒãã³ã¹ã®ãã©ã³ã¹ãèŠãŠéžã³ãŸãããã
ãã©ã¡ããæ£ããããã§ã¯ãªããã©ã¡ããä»ã®ããŒã ã»ãããžã§ã¯ãã«åãããã«çŠç¹ãåœãŠãã®ãã³ãã§ããæžç±ãPEPãªã©å ±éã®åç §ç¹ãæã¡å¯ããšãææ è«ã«ãªãã建èšçãªè°è«ã«ãªããŸããð
Pythonã®è³åŠäž¡è«ã³ãŒãã¯ãæžãæ¹ã®åªå£ãç«¶ããã®ã§ã¯ãªãããèªåã®éžæã«çç±ãæã€ãç·Žç¿å Žã®ãããªãã®ã§ããelseæç¡ãåä»£å ¥ãæ©æãªã¿ãŒã³ãåãã³ãââã©ããäžèŠäºçްã§ãããçªãè©°ãããšèšèšææ³ã»ããŒã æåã»ã³ãŒãã®å¯¿åœã«é¢ããæ·±ãããŒãã§ããð¯
ããªãã»ã©ãããããèãæ¹ãããã®ãããšåŒãåºããå¢ãããªããããã²ããªãã®ã³ãŒããã説æã§ãããæŽç·Žãããã³ãŒãããžç£šãäžããŠã¿ãŠãã ãããä»å玹ä»ããæžç±ãçžæ£ã«ãææ¥ããã®ã³ãŒãã£ã³ã°ããã£ãšæ¥œãããªããŸãããã«ãð
ð ãåãã³ãŒãããããèœã¡ãª…
ð Pythonã®ãå¶åŸ¡æ§æã…
ð ãæååãèªåšã«æãã人ã…
ð ãèªã¿ãããã³ãŒããã¯å€æ°…
ð ããã°ã©ãã³ã°ã®ãã¹ãŠã¯ã…
ð ãæååã«å€æ°ãå ¥ãããã…