Pythonã®`keyword`ã¢ãžã¥ãŒã«ã®å æ¬çã§è©³çްãªã¬ã€ããå ç¢ãªã¡ã¿ããã°ã©ãã³ã°ãã³ãŒãçæãæ€èšŒã®ããã«ãäºçŽããŒã¯ãŒãããªã¹ãåããã§ãã¯ã管çããæ¹æ³ãåŠã³ãŸãã
Pythonã®`keyword`ã¢ãžã¥ãŒã«: äºçŽèªã®ç©¶æ¥µã¬ã€ã
ããããããã°ã©ãã³ã°èšèªã®åºå€§ãªå®å®ã§ã¯ãç¹å®ã®åèªãç¥èãªååšãšãªããŸãããããã¯æ§é çãªæ±ã§ãããææ³çãªæ¥çå€ã§ãããå
šäœã®æ§æããŸãšããŠããŸããPythonã§ã¯ããããã¯ããŒã¯ãŒããŸãã¯äºçŽèªãšããŠç¥ãããŠããŸãã倿°åãªã©ãæå³ãããç®ç以å€ã«äœ¿çšããããšãããšãå³åº§ã«å®¹èµŠã®ãªã`SyntaxError`ãçºçããŸããããããããããã©ã®ããã«è¿œè·¡ããã°ããã®ã§ããããïŒçæããã³ãŒãããåãå
¥ãããŠãŒã¶ãŒå
¥åãã誀ã£ãŠãã®ç¥èãªé åãèžã¿èãããªãããã«ããã«ã¯ã©ãããã°ããã®ã§ããããïŒãã®çãã¯ãPythonã®æšæºã©ã€ãã©ãªã®ã·ã³ãã«ã§ãšã¬ã¬ã³ãã§åŒ·åãªéšåã«ãããŸããããã¯ãkeyword
ã¢ãžã¥ãŒã«ã§ãã
ãã®å
æ¬çãªã¬ã€ãã§ã¯ãkeyword
ã¢ãžã¥ãŒã«ã«ã€ããŠæ·±ãæãäžããŠãããŸããPythonã®æ§æã«ãŒã«ãåŠã³å§ããã°ããã®åå¿è
ãå
ç¢ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŠããäžçŽéçºè
ããã¬ãŒã ã¯ãŒã¯ãã³ãŒããžã§ãã¬ãŒã¿ãŒã«åãçµãã§ããäžçŽããã°ã©ããŒãªã©ããã®ã¢ãžã¥ãŒã«ããã¹ã¿ãŒããããšã¯ãããã¯ãªãŒã³ã§ãããå®å
šã§ãããã€ã³ããªãžã§ã³ããªPythonã³ãŒããèšè¿°ããããã®äžå¯æ¬ ãªã¹ãããã§ãã
Pythonã®ããŒã¯ãŒããšã¯æ£ç¢ºã«ã¯äœã§ããïŒ
Pythonã®æ§æã®åºç€
ãã®æ žå¿ã«ãããŠãããŒã¯ãŒããšã¯ãPythonã€ã³ã¿ããªã¿ã«ãšã£ãŠç¹å¥ãªããããããå®çŸ©ãããæå³ãæã€åèªã§ãããããã®åèªã¯ãã¹ããŒãã¡ã³ããšã³ãŒããããã¯ã®æ§é ãå®çŸ©ããããã«èšèªã«ãã£ãŠäºçŽãããŠããŸããããããPythonèšèªã®åè©ãšæ¥ç¶è©ãšèããŠãã ããããããã¯ã€ã³ã¿ããªã¿ã«äœãããããã©ã®ããã«åå²ãããããã€ã«ãŒããããããããŠã©ã®ããã«æ§é ãå®çŸ©ããããæç€ºããŸãã
ãããã¯ç¹å¥ãªåœ¹å²ãæã£ãŠãããããèå¥åãšããŠäœ¿çšããããšã¯ã§ããŸãããèå¥åãšã¯ã倿°ã颿°ãã¯ã©ã¹ãã¢ãžã¥ãŒã«ããŸãã¯ãã®ä»ã®ãªããžã§ã¯ãã«ä»ããååã§ããããŒã¯ãŒãã«å€ãå²ãåœãŠãããšãããšãPythonã®ããŒãµãŒã¯ã³ãŒããå®è¡ãããåã«åæ¢ããŸãã
ããšãã°ã`for`ã倿°åãšããŠäœ¿çšããããšããå ŽåïŒ
# ãã®ã³ãŒãã¯å®è¡ãããŸãã
for = "loop variable"
# çµæ -> SyntaxError: invalid syntax
ãã®å³æãã£ãŒãããã¯ã¯è¯ãããšã§ããèšèªã®æ§é ã®æŽåæ§ãä¿è·ããŸãããããã®ç¹å¥ãªåèªã®ãªã¹ãã«ã¯ãif
ãelse
ãwhile
ãfor
ãdef
ãclass
ãimport
ãreturn
ãªã©ã®éŠŽæã¿ã®ããé¡ãå«ãŸããŠããŸãã
éèŠãªåºå¥ïŒããŒã¯ãŒããšçµã¿èŸŒã¿é¢æ°
PythonãåããŠäœ¿çšããéçºè ã«ãšã£ãŠãããŒã¯ãŒããšçµã¿èŸŒã¿é¢æ°ã®éãã¯ããæ··ä¹±ããç¹ã§ããã©ã¡ããã€ã³ããŒããªãã§å®¹æã«å©çšã§ããŸããããã®æ§è³ªã¯æ ¹æ¬çã«ç°ãªããŸãã
- ããŒã¯ãŒãïŒèšèªã®æ§æèªäœã®äžéšã§ãã倿Žäžå¯ã§ãåå²ãåœãŠã§ããŸããããããã¯ææ³ã§ãã
- çµã¿èŸŒã¿é¢æ°ïŒ
print()
ãlen()
ãstr()
ãlist()
ãªã©ãã°ããŒãã«åå空éã«ãããããããŒãããã颿°ã§ããã²ã©ãããæ¹ã§ãããåå²ãåœãŠããããšãã§ããŸãããããã¯æšæºçãªèªåœã®äžéšã§ãããã³ã¢ææ³ã§ã¯ãããŸããã
äŸã§èª¬æããŸãããïŒ
# ããŒã¯ãŒããåå²ãåœãŠããããšãããšïŒå€±æïŒ
try = "attempt"
# çµæ -> SyntaxError: invalid syntax
# çµã¿èŸŒã¿é¢æ°ãåå²ãåœãŠããïŒåäœããŸãããéåžžã«æªãã¢ã€ãã¢ã§ãïŒïŒ
print("This is the original print function")
print = "I am no longer a function"
# 次ã®è¡ã¯ã'print'ãæååã«ãªã£ããããTypeErrorãçºçãããŸã
# print("This will fail")
ãã®åºå¥ãçè§£ããããšãéèŠã§ããkeyword
ã¢ãžã¥ãŒã«ã¯ãæåã®ã«ããŽãªãã€ãŸãPythonèšèªã®çã®ãåå²ãåœãŠäžå¯èœãªäºçŽèªã®ã¿ãæ±ããŸãã
`keyword`ã¢ãžã¥ãŒã«ã®ç޹ä»ïŒããªãã®å¿ é ããŒã«ããã
ããŒã¯ãŒããäœã§ãããã確ç«ããã®ã§ããããã管çããããã«èšèšãããããŒã«ãèŠãŠã¿ãŸããããkeyword
ã¢ãžã¥ãŒã«ã¯ãPythonæšæºã©ã€ãã©ãªã®çµã¿èŸŒã¿éšåã§ããã€ãŸããpip
ã§äœããã€ã³ã¹ããŒã«ããå¿
èŠãªãããã€ã§ã䜿çšã§ããŸããåçŽãªimport keyword
ã ãã§ãã
ãã®ã¢ãžã¥ãŒã«ã¯ã2ã€ã®äž»èŠãªåŒ·åãªæ©èœãæãããŸãïŒ
- ãªã¹ãåïŒçŸåšå®è¡ããŠããPythonã®ããŒãžã§ã³ã«ã€ããŠããã¹ãŠã®ããŒã¯ãŒãã®å®å šã§ææ°ã®ãªã¹ããæäŸããŸãã
- ãã§ãã¯ïŒç¹å®ã®æååãããŒã¯ãŒããã©ãããé«éãã€ç¢ºå®ã«ãã§ãã¯ããæ¹æ³ãæäŸããŸãã
ãããã®ã·ã³ãã«ãªæ©èœã¯ããªã³ã¿ãŒã®æ§ç¯ããåçã§å®å šãªã·ã¹ãã ã®äœæãŸã§ãå¹ åºãé«åºŠãªã¢ããªã±ãŒã·ã§ã³ã®åºç€ã§ãã
`keyword`ã¢ãžã¥ãŒã«ã®ã³ã¢æ©èœïŒå®è·µã¬ã€ã
keyword
ã¢ãžã¥ãŒã«ã¯çŸããã·ã³ãã«ã§ãã»ãã®å°æ°ã®å±æ§ãšé¢æ°ãéããŠãã®äž»ãªæ©èœãå
¬éããŠããŸãããããããå®è·µçãªäŸãšãšãã«èŠãŠãããŸãããã
1. `keyword.kwlist`ã§ãã¹ãŠã®ããŒã¯ãŒãããªã¹ãåãã
æãç°¡åãªæ©èœã¯keyword.kwlist
ã§ããããã¯é¢æ°ã§ã¯ãªããçŸåšã®Pythonã€ã³ã¿ããªã¿ã§å®çŸ©ãããŠãããã¹ãŠã®ããŒã¯ãŒãã®ã·ãŒã±ã³ã¹ïŒå
·äœçã«ã¯æååã®ãªã¹ãïŒãä¿æãã屿§ã§ããããã¯ããªãã®æ±ºå®çãªçå®ã®æºã§ãã
äœ¿çšæ¹æ³ïŒ
import keyword
# ãã¹ãŠã®ããŒã¯ãŒãã®ãªã¹ããååŸãã
all_keywords = keyword.kwlist
print(f"ãã®ããŒãžã§ã³ã®Pythonã«ã¯{len(all_keywords)}åã®ããŒã¯ãŒãããããŸãã")
print("ããã«ãããŸãïŒ")
print(all_keywords)
ãã®ã³ãŒããå®è¡ãããšãããŒã¯ãŒãã®æ°ãšãªã¹ãèªäœãåºåãããŸãã'False'
ã'None'
ã'True'
ã'and'
ã'as'
ã'assert'
ã'async'
ã'await'
ãªã©ã®åèªã衚瀺ãããŸãããã®ãªã¹ãã¯ãç¹å®ã®PythonããŒãžã§ã³ã®èšèªã®äºçŽèªã®ã¹ãããã·ã§ããã§ãã
ãªãããã¯åœ¹ã«ç«ã€ã®ã§ããïŒããã°ã©ã ãèšèªã®æ§æãèªèããããã®å ççãªæ¹æ³ãæäŸããŸããããã¯ãPythonã³ãŒããè§£æãåæããŸãã¯çæããå¿ èŠãããããŒã«ã«ãšã£ãŠéåžžã«è²Žéã§ãã
2. `keyword.iskeyword()`ã§ããŒã¯ãŒãããã§ãã¯ãã
å®å
šãªãªã¹ããæã£ãŠããããšã¯çŽ æŽãããã§ãããåäžã®åèªãããŒã¯ãŒããã©ããã確èªããããã«ãããå埩åŠçããããšã¯éå¹ççã§ãããã®ã¿ã¹ã¯ã®ããã«ãã¢ãžã¥ãŒã«ã¯é«åºŠã«æé©åããã颿°keyword.iskeyword(s)
ãæäŸããŸãã
ãã®é¢æ°ã¯1ã€ã®åŒæ°ãæåås
ãåãåããPythonã®ããŒã¯ãŒãã®å Žåã¯True
ãè¿ãããã以å€ã®å Žåã¯False
ãè¿ããŸãããã®ãã§ãã¯ã¯ãããã·ã¥ããŒã¹ã®ã«ãã¯ã¢ããã䜿çšãããããéåžžã«é«éã§ãã
äœ¿çšæ¹æ³ïŒ
import keyword
# ããã€ãã®æœåšçãªããŒã¯ãŒãããã§ãã¯ãã
print(f"'for'ã¯ããŒã¯ãŒãã§ãïŒ{keyword.iskeyword('for')}")
print(f"'if'ã¯ããŒã¯ãŒãã§ãïŒ{keyword.iskeyword('if')}")
print(f"'True'ã¯ããŒã¯ãŒãã§ãïŒ{keyword.iskeyword('True')}")
# ããã€ãã®éããŒã¯ãŒãããã§ãã¯ãã
print(f"'variable'ã¯ããŒã¯ãŒãã§ãïŒ{keyword.iskeyword('variable')}")
print(f"'true'ã¯ããŒã¯ãŒãã§ãïŒ{keyword.iskeyword('true')}") # 倧æåãšå°æåã®åºå¥ãããããšã«æ³šæããŠãã ãã
print(f"'Print'ã¯ããŒã¯ãŒãã§ãïŒ{keyword.iskeyword('Print')}")
æåŸ ãããåºåïŒ
'for'ã¯ããŒã¯ãŒãã§ãïŒTrue
'if'ã¯ããŒã¯ãŒãã§ãïŒTrue
'True'ã¯ããŒã¯ãŒãã§ãïŒTrue
'variable'ã¯ããŒã¯ãŒãã§ãïŒFalse
'true'ã¯ããŒã¯ãŒãã§ãïŒFalse
'Print'ã¯ããŒã¯ãŒãã§ãïŒFalse
ãã®äŸããéèŠãªããšã¯ãPythonã®ããŒã¯ãŒãã¯å€§æåãšå°æåãåºå¥ãããšããããšã§ããTrue
ãFalse
ãããã³None
ã¯ããŒã¯ãŒãã§ãããtrue
ãfalse
ãããã³none
ã¯ããã§ã¯ãããŸãããkeyword.iskeyword()
ã¯ããã®éèŠãªè©³çŽ°ãæ£ããåæ ããŠããŸãã
3. `keyword.issoftkeyword()`ã§ãœããããŒã¯ãŒããçè§£ãã
Pythonãé²åããã«ã€ããŠãæ°ããæ©èœã远å ãããŸããæ°ããããŒã¯ãŒããæ¢åã®ã³ãŒãã倿°åãšããŠäœ¿çšããŠããå¯èœæ§ã®ããã³ãŒããå£ããªãããã«ããããã«ãPythonã¯ããœããããŒã¯ãŒãããŸãã¯ãã³ã³ããã¹ãäŸåããŒã¯ãŒãããå°å
¥ããããšããããŸãããããã¯ãç¹å®ã®ã³ã³ããã¹ãã§ã®ã¿ããŒã¯ãŒããšããŠæ©èœããåèªã§ããæãé¡èãªäŸã¯ãæ§é çãªãã¿ãŒã³ãããã³ã°ã®ããã«Python 3.10ã§å°å
¥ãããmatch
ãcase
ãããã³_
ïŒã¯ã€ã«ãã«ãŒãïŒã§ãã
ããããå
·äœçã«èå¥ããããã«ãPython 3.9ã¯keyword.issoftkeyword(s)
颿°ãå°å
¥ããŸããã
PythonããŒãžã§ã³ã«é¢ããæ³šæïŒmatch
ãšcase
ã¯match
ãããã¯å
ã§ããŒã¯ãŒããšããŠåäœããŸãããä»ã®å Žæã§ã¯å€æ°åãŸãã¯é¢æ°åãšããŠäœ¿çšã§ãããããåŸæ¹äºææ§ãç¶æããŠããŸããkeyword
ã¢ãžã¥ãŒã«ã¯ããã®åºå¥ã管çããã®ã«åœ¹ç«ã¡ãŸãã
äœ¿çšæ¹æ³ïŒ
import keyword
import sys
# ãã®é¢æ°ã¯Python 3.9ã§è¿œå ãããŸãã
if sys.version_info >= (3, 9):
print(f"'match'ã¯ãœããããŒã¯ãŒãã§ãïŒ{keyword.issoftkeyword('match')}")
print(f"'case'ã¯ãœããããŒã¯ãŒãã§ãïŒ{keyword.issoftkeyword('case')}")
print(f"'_'ã¯ãœããããŒã¯ãŒãã§ãïŒ{keyword.issoftkeyword('_')}")
print(f"'if'ã¯ãœããããŒã¯ãŒãã§ãïŒ{keyword.issoftkeyword('if')}")
# ã¢ãã³PythonïŒ3.10以éïŒã§ã¯ããœããããŒã¯ãŒããã¡ã€ã³ã®kwlistã«ãããŸã
print(f"\n'match'ã¯iskeyword()ã«ãã£ãŠããŒã¯ãŒããšèŠãªãããŸãïŒ{keyword.iskeyword('match')}")
ãã®åŸ®åŠãªåºå¥ã¯ãææ°ã®Pythonæ§æãæ£ç¢ºã«è§£æããå¿
èŠãããããŒã«ãæ§ç¯ããŠããéçºè
ã«ãšã£ãŠéèŠã§ããã»ãšãã©ã®æ¥åžžçãªã¢ããªã±ãŒã·ã§ã³éçºã§ã¯ãkeyword.iskeyword()
ã¯ãèå¥åãšããŠé¿ããã¹ããã¹ãŠã®åèªãæ£ããèå¥ãããããååã§ãã
å®è·µçãªã¢ããªã±ãŒã·ã§ã³ãšãŠãŒã¹ã±ãŒã¹
ã§ã¯ããªãéçºè ã¯ããã°ã©ã ã§ããŒã¯ãŒãããã§ãã¯ããå¿ èŠãããã®ã§ããããïŒãã®ã¢ããªã±ãŒã·ã§ã³ã¯ãç¹ã«äžçŽããã³äžçŽã®ãã¡ã€ã³ã§ãæ³å以äžã«äžè¬çã§ãã
1. åçãªã³ãŒãçæãšã¡ã¿ããã°ã©ãã³ã°
ã¡ã¿ããã°ã©ãã³ã°ã¯ãä»ã®ã³ãŒããèšè¿°ãŸãã¯æäœããã³ãŒããèšè¿°ããæè¡ã§ããããã¯ããã¬ãŒã ã¯ãŒã¯ããªããžã§ã¯ãé¢ä¿ããããŒïŒORMïŒãããã³ããŒã¿æ€èšŒã©ã€ãã©ãªïŒPydanticãªã©ïŒã§ããèŠãããŸãã
ã·ããªãªïŒããŒã¿ãœãŒã¹ïŒJSONã¹ããŒããŸãã¯ããŒã¿ããŒã¹ããŒãã«ãªã©ïŒãåãåããããã衚ãPythonã¯ã©ã¹ãèªåçã«çæããããŒã«ãæ§ç¯ããŠãããšããŸãããœãŒã¹ã®ããŒãŸãã¯ååã¯ãã¯ã©ã¹ã®å±æ§ã«ãªããŸãã
åé¡ïŒããŒã¿ããŒã¹åã'from'
ãšããååã§ãã£ãããJSONããŒã'class'
ã§ãã£ãå Žåã¯ã©ãã§ããããïŒãã®ååã§å±æ§ãç²ç®çã«äœæãããšãç¡å¹ãªPythonã³ãŒããçæãããŸãã
解決çïŒkeyword
ã¢ãžã¥ãŒã«ã¯ããªãã®å®å
šãããã§ãã屿§ãçæããåã«ãååãããŒã¯ãŒããã©ããã確èªããŸããããŒã¯ãŒãã§ããå Žåã¯ãPythonã®äžè¬çãªèŠåã§ããã¢ã³ããŒã¹ã³ã¢ãä»å ãããªã©ããŠããµãã¿ã€ãºã§ããŸãã
ãµãã¿ã€ã¶ãŒé¢æ°ã®äŸïŒ
import keyword
def sanitize_identifier(name):
"""æååãæå¹ãªPythonèå¥åã§ãããããŒã¯ãŒãã§ã¯ãªãããšã確èªããŸãã"""
if keyword.iskeyword(name):
return f"{name}_"
# å®å
šãªå®è£
ã§ã¯ãstr.isidentifier()ããã§ãã¯ããŸã
return name
# 䜿çšäŸïŒ
fields = ["name", "id", "from", "import", "data"]
print("ã¯ã©ã¹å±æ§ãçæäž...")
for field in fields:
sanitized_field = sanitize_identifier(field)
print(f" self.{sanitized_field} = ...")
åºåïŒ
ã¯ã©ã¹å±æ§ãçæäž...
self.name = ...
self.id = ...
self.from_ = ...
self.import_ = ...
self.data = ...
ãã®ç°¡åãªãã§ãã¯ã¯ãçæãããã³ãŒãã§å£æ» çãªæ§æãšã©ãŒãåé¿ããã¡ã¿ããã°ã©ãã³ã°ããŒã«ãå ç¢ã§ä¿¡é Œæ§ã®é«ããã®ã«ããŸãã
2. ãã¡ã€ã³åºæèšèªïŒDSLïŒã®äœæ
ãã¡ã€ã³åºæèšèªïŒDSLïŒã¯ãç¹å®ã®ã¿ã¹ã¯çšã«äœæãããããèšèªã§ãããå€ãã®å ŽåãPythonãªã©ã®æ±çšèšèªã®äžã«æ§ç¯ãããŸããããŒã¿ããŒã¹ã®SQLAlchemy
ãããŒã¿èŠèŠåã®Plotly
ãªã©ã®ã©ã€ãã©ãªã¯ãããããã®ãã¡ã€ã³ã«å¯ŸããŠå¹æçã«DSLãæäŸããŠããŸãã
DSLãèšèšããéã¯ãç¬èªã®ã³ãã³ããšæ§æãå®çŸ©ããå¿
èŠããããŸããkeyword
ã¢ãžã¥ãŒã«ã¯ãDSLã®èªåœãPythonèªèº«ã®äºçŽèªãšè¡çªããªãããã«ããããã«äžå¯æ¬ ã§ããkeyword.kwlist
ã«å¯ŸããŠãã§ãã¯ããããšã«ããããããŸãããšæœåšçãªè§£æã®ç«¶åãåé¿ããããã«èšèšãã¬ã€ãã§ããŸãã
3. æè²ããŒã«ããªã³ã¿ãŒãIDEã®æ§ç¯
PythonéçºããŒã«ã®ãšã³ã·ã¹ãã å šäœã¯ãPythonã®æ§æãçè§£ããããšã«äŸåããŠããŸãã
- ãªã³ã¿ãŒïŒäŸïŒPylintãFlake8ïŒïŒãããã®ããŒã«ã¯ããšã©ãŒãšã¹ã¿ã€ã«ã®åé¡ãã³ãŒãã«å¯ŸããŠéçã«åæããŸããæåã®ã¹ãããã¯ã³ãŒããè§£æããããšã§ãããããã«ã¯äœãããŒã¯ãŒãã§äœãèå¥åã§ããããç¥ãããšãå¿ èŠã§ãã
- IDEïŒäŸïŒVS CodeãPyCharmïŒïŒãšãã£ã¿ãŒã®æ§æåŒ·èª¿è¡šç€ºã¯ãããŒã¯ãŒããšå€æ°ãæååãã³ã¡ã³ããåºå¥ã§ããããæ©èœããŸãã
def
ãif
ãããã³return
ã¯ããŒã¯ãŒãã§ããããšãç¥ã£ãŠãããããç°ãªãè²ã§è¡šç€ºãããŸãããã®ç¥èã¯ãkeyword
ã¢ãžã¥ãŒã«ãæäŸãããã®ãšåããªã¹ãããåŸãããŸãã - æè²ãã©ãããã©ãŒã ïŒã€ã³ã¿ã©ã¯ãã£ããªã³ãŒãã£ã³ã°ãã¥ãŒããªã¢ã«ã¯ããªã¢ã«ã¿ã€ã ã®ãã£ãŒãããã¯ãæäŸããå¿
èŠããããŸããçåŸã倿°
else
ã«ååãä»ããããšãããšããã©ãããã©ãŒã ã¯keyword.iskeyword('else')
ã䜿çšããŠãšã©ãŒãæ€åºããã'else'ã¯Pythonã®äºçŽããŒã¯ãŒãã§ããã倿°åãšããŠäœ¿çšããããšã¯ã§ããŸãããã®ãããªåœ¹ç«ã€ã¡ãã»ãŒãžãæäŸã§ããŸãã
4. èå¥åã«å¯ŸãããŠãŒã¶ãŒå ¥åãæ€èšŒãã
äžéšã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåŸã§ããã°ã©ã èå¥åã«ãªãå¯èœæ§ã®ãããšã³ãã£ãã£ã«ãŠãŒã¶ãŒãååãä»ããããšãã§ããŸããããšãã°ãããŒã¿ãµã€ãšã³ã¹ãã©ãããã©ãŒã ã§ã¯ããŠãŒã¶ãŒãããŒã¿ã»ããå
ã®èšç®ãããåã«ååãä»ããããšãã§ããŸãããã®ååã¯ã屿§ã¢ã¯ã»ã¹ïŒäŸïŒdataframe.my_new_column
ïŒãä»ããŠåã«ã¢ã¯ã»ã¹ããããã«äœ¿çšã§ããŸãã
ãŠãŒã¶ãŒã'yield'
ã®ãããªååãå
¥åãããšãããã¯ãšã³ãã·ã¹ãã ãå£ããå¯èœæ§ããããŸããå
¥å段éã§keyword.iskeyword()
ã䜿çšããç°¡åãªæ€èšŒæé ã«ããããããå®å
šã«é²ããããè¯ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšããå®å®ããã·ã¹ãã ãæäŸã§ããŸãã
å ¥åããªããŒã¿ãŒã®äŸïŒ
import keyword
def is_valid_column_name(name):
"""ãŠãŒã¶ãŒãæäŸããååãæå¹ãªèå¥åã§ãããã©ããã確èªããŸãã"""
if not isinstance(name, str) or not name.isidentifier():
print(f"ãšã©ãŒïŒ'{name}'ã¯æå¹ãªèå¥å圢åŒã§ã¯ãããŸããã")
return False
if keyword.iskeyword(name):
print(f"ãšã©ãŒïŒ'{name}'ã¯äºçŽæžã¿ã®PythonããŒã¯ãŒãã§ããã䜿çšã§ããŸããã")
return False
return True
print(is_valid_column_name("sales_total")) # True
print(is_valid_column_name("2023_sales")) # FalseïŒæ°åã§å§ãŸãïŒ
print(is_valid_column_name("for")) # FalseïŒããŒã¯ãŒãã§ãïŒ
PythonããŒãžã§ã³éã®ããŒã¯ãŒãïŒé²åã«é¢ããæ³šæ
Pythonèšèªã¯éçã§ã¯ãªããé²åããŠããŸããæ°ããããŒãžã§ã³ã«ã¯æ°ããæ©èœããããå Žåã«ãã£ãŠã¯æ°ããããŒã¯ãŒãããããŸããkeyword
ã¢ãžã¥ãŒã«ã®çŸããã¯ãèšèªãšãšãã«é²åããããšã§ããååŸããããŒã¯ãŒãã®ãªã¹ãã¯ãåžžã«äœ¿çšããŠããã€ã³ã¿ããªã¿ã«åºæã®ãã®ã§ãã
- Python 2ãã3ïŒæãæåãªå€æŽã®1ã€ã¯ã
print
ãšexec
ã§ãããPython 2ã§ã¯ãã¹ããŒãã¡ã³ãã®ããŒã¯ãŒãã§ãããPython 3ã§ã¯ãçµã¿èŸŒã¿é¢æ°ã«ãªã£ããããkeyword.kwlist
ããåé€ãããŸããã - Python 3.5+ïŒéåæããã°ã©ãã³ã°ã®å°å
¥ã«ããã
async
ãšawait
ãããããããŸãããæåã¯ã³ã³ããã¹ãäŸåã§ããããPython 3.7ã§ã¯ãé©åãªïŒããŒãïŒããŒã¯ãŒãã«ãªããŸããã - Python 3.10ïŒæ§é çãªãã¿ãŒã³ãããã³ã°æ©èœã«ããã
match
ãšcase
ãã³ã³ããã¹ãäŸåããŒã¯ãŒããšããŠè¿œå ãããŸããã
ããã¯ãkeyword
ã¢ãžã¥ãŒã«ã«äŸåããã³ãŒããæ¬è³ªçã«ç§»æ€å¯èœã§ãåæ¹äºææ§ãããããšãæå³ããŸããPython 3.11ã§èšè¿°ãããã³ãŒããžã§ãã¬ãŒã¿ãŒã¯ãPython 3.8ã§å®è¡ãããŠããå Žåãç¥ããªãã£ãã§ãããmatch
ãèªåçã«åé¿ããæ¹æ³ãç¥ã£ãŠããŸãããã®åçãªæ§è³ªã¯ãã¢ãžã¥ãŒã«ã®æã匷åã§ãããªããéå°è©äŸ¡ãããŠããæ©èœã®1ã€ã§ãã
ãã¹ããã©ã¯ãã£ã¹ãšããããèœãšã穎
keyword
ã¢ãžã¥ãŒã«ã¯ã·ã³ãã«ã§ãããåŸãã¹ããã¹ããã©ã¯ãã£ã¹ãšåé¿ãã¹ãèœãšã穎ãããã€ããããŸãã
DoïŒæ€èšŒã«ã¯keyword.iskeyword()
ã䜿çšãã
ããã°ã©ã ã«ããèå¥åã®äœæãŸãã¯æ€èšŒã«é¢ããã·ããªãªã§ã¯ããã®é¢æ°ã¯æ€èšŒããžãã¯ã®äžéšã§ããå¿ èŠããããŸããé«éã§æ£ç¢ºã§ããããã®ãã§ãã¯ãå®è¡ããããã®æãPythonicãªæ¹æ³ã§ãã
Don'tïŒkeyword.kwlist
ã倿Žãã
keyword.kwlist
ã¯éåžžã®Pythonãªã¹ãã§ããã€ãŸããå®è¡æã«æè¡çã«å€æŽã§ããŸãïŒäŸïŒkeyword.kwlist.append("my_keyword")
ïŒããããè¡ãããšã¯æ±ºããŠãããŸããããªã¹ãã倿ŽããŠããPythonããŒãµãŒèªäœã«ã¯åœ±é¿ãããŸãããããŒã¯ãŒãã«é¢ããããŒãµãŒã®ç¥èã¯ããŒãã³ãŒããããŠããŸãããªã¹ãã倿Žãããšãkeyword
ã¢ãžã¥ãŒã«ã®ã€ã³ã¹ã¿ã³ã¹ãèšèªã®å®éã®æ§æãšççŸããããã«ãªããæ··ä¹±ãæããäºæž¬ã§ããªããã°ãçºçããŸãããã®ã¢ãžã¥ãŒã«ã¯ãæ€æ»çšã§ããã倿Žçšã§ã¯ãããŸããã
DoïŒå€§æåãšå°æåã®åºå¥ãèŠããŠãã
ããŒã¯ãŒãã¯å€§æåãšå°æåãåºå¥ããããšãåžžã«èŠããŠãããŠãã ããããŠãŒã¶ãŒå
¥åãæ€èšŒãããšãã¯ãiskeyword()
ã䜿çšããŠãã§ãã¯ããåã«ãã±ãŒã¹ãã©ãŒã«ãã£ã³ã°ïŒäŸïŒå°æåãžã®å€æïŒãè¡ããªãããã«ããŠãã ãããããããªããšã'True'
ã'False'
ãããã³'None'
ã«å¯ŸããŠèª€ã£ãçµæãåŸãããŸãã
Don'tïŒããŒã¯ãŒããçµã¿èŸŒã¿é¢æ°ãšæ··åãã
list
ãstr
ãªã©ã®çµã¿èŸŒã¿é¢æ°ã®ååãã·ã£ããŒã€ã³ã°ããããšãæªãç¿æ
£ã§ãããkeyword
ã¢ãžã¥ãŒã«ã¯ãããæ€åºããã®ã«åœ¹ç«ã¡ãŸãããããã¯å¥ã®ã¯ã©ã¹ã®åé¡ã§ãããéåžžã¯ãªã³ã¿ãŒã«ãã£ãŠåŠçãããŸããkeyword
ã¢ãžã¥ãŒã«ã¯ãSyntaxError
ã®åå ãšãªãäºçŽèªã®ã¿ã察象ãšããŠããŸãã
çµè«ïŒPythonã®æ§æèŠçŽ ããã¹ã¿ãŒãã
keyword
ã¢ãžã¥ãŒã«ã¯ã`asyncio`ã®ããã«æŽŸæã§ã¯ãªãã`multiprocessing`ã®ããã«è€éã§ã¯ãªããããããŸããããããããçå£ãªPythonéçºè
ã«ãšã£ãŠåºæ¬çãªããŒã«ã§ããPythonã®æ§æã®ãŸãã«äžæ žã§ããããã®äºçŽèªãžã®ã¯ãªãŒã³ã§ä¿¡é Œæ§ãé«ããããŒãžã§ã³ãèªèããã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã
keyword.kwlist
ãškeyword.iskeyword()
ããã¹ã¿ãŒããããšã§ãããå
ç¢ã§ã€ã³ããªãžã§ã³ãã§ãšã©ãŒã®ãªãã³ãŒããèšè¿°ã§ããããã«ãªããŸãã匷åãªã¡ã¿ããã°ã©ãã³ã°ããŒã«ãæ§ç¯ããããå®å
šãªãŠãŒã¶ãŒåãã®ã¢ããªã±ãŒã·ã§ã³ãäœæããPythonèšèªã®ãšã¬ã¬ã³ããªæ§é ãžã®æ·±ãçè§£ãåŸãããšãã§ããŸããæ¬¡ã«èå¥åãæ€èšŒããããã³ãŒãã®äžéšãçæãããããå¿
èŠãããå Žåã¯ãã©ã®ããŒã«ã䜿çšããã°ããããæ£ç¢ºã«ããããããPythonã®åŒ·åºãªåºç€ãèªä¿¡ãæã£ãŠæ§ç¯ã§ããŸãã