16. ä»é²Â¶
16.1. 対話ã¢ã¼ã¶
対話åã® REPL ã¯2種é¡ããã¾ãã ã¯ã©ã·ãã¯ãªåºæ¬ã¤ã³ã¿ã¼ããªã¿ã¯æä½éã®è¡å¶å¾¡æ©è½ãæã¤å ¨ãã©ãããã©ã¼ã ã§ãµãã¼ãããã¦ãã¾ãã
Windows ãã curses ããµãã¼ããã Unix ç³»ã·ã¹ãã ã§ã¯ã Python 3.13 ä»¥é æ°ãã対話åã·ã§ã«ãããã©ã«ãã§ä½¿ããã¾ãã ããã¯ãè²ä»ããè¤æ°è¡ç·¨éãå±¥æ´ãã©ã¦ãºãè²¼ãä»ãã¢ã¼ãããµãã¼ããã¦ãã¾ãã è²ä»ããç¡å¹ã«ããã«ã¯ã è²ã®å¶å¾¡ ãåç
§ãã¦ãã ããã ãã¡ã³ã¯ã·ã§ã³ãã¼ã¯ããã¤ãã®è¿½å æ©è½ãæä¾ãã¾ãã F1 ã¯ã対話åãã«ããã©ã¦ã¶ pydoc ã«å
¥ãã¾ãã F2 ã¯ã³ãã³ãã©ã¤ã³å±¥æ´ããåºåã >> ã ... ããã³ããã表示ããã«ãã©ã¦ãºã§ãã¾ãã F3 ã¯ããã¼ã¹ãã¢ã¼ããã«å
¥ãããã大ããªãããã¯ã³ã¼ãã®è²¼ãä»ããç°¡åã«ãªãã¾ãã F3 ãæ¼ãã¨é常ã®ããã³ããã«æ»ãã¾ãã
æ°ãã対話åã·ã§ã«ã§ã¯ã exit ã¾ã㯠quit ã¨æã£ã¦ã·ã§ã«ãçµãã¾ãããããã®ã³ãã³ãã®å¾ã«å¼ã³åºãæ¬å¼§ã追å ããå¿ è¦ã¯ããã¾ããã
æ°ãã対話åã·ã§ã«ãæã¾ãªãå ´åã¯ãç°å¢å¤æ° PYTHON_BASIC_REPL ã§ç¡å¹ã«ã§ãã¾ãã
16.1.1. ã¨ã©ã¼å¦ç¶
ã¨ã©ã¼ãçºçããã¨ãã¤ã³ã¿ã¼ããªã¿ã¯ã¨ã©ã¼ã¡ãã»ã¼ã¸ã¨ã¹ã¿ãã¯ãã¬ã¼ã¹ã表示ãã¾ãã対話ã¢ã¼ãã§ã¯ãããããå
ã®ããã³ããã«æ»ãã¾ã; ãã¡ã¤ã«ããå®è¡ããå ´åã¯ãã¹ã¿ãã¯ãã¬ã¼ã¹ã表示ãã¦ã¼ã以å¤ã®çµäºã¹ãã¼ã¿ã¹ã§çµäºãã¾ãï¼try æã® except ç¯ã§å¦çãããä¾å¤ã¯ãããã§ããã¨ã©ã¼ã«ã¯ãããã¾ãããï¼ä¸é¨ã®ã¨ã©ã¼ã¯ç¡æ¡ä»¶ã«è´å½çã§ãããã¼ã以å¤ã®çµäºã¹ãã¼ã¿ã¹ã§çµäºãã¾ã; ããã¯å
é¨ã®ä¸æ´åããã種ã®ã¡ã¢ãªä¸è¶³ã®å ´åã«é©ç¨ããã¾ããã¨ã©ã¼ã¡ãã»ã¼ã¸ã¯å
¨ã¦æ¨æºã¨ã©ã¼åºåã«æ¸ãè¾¼ã¾ãã¾ã; ããã«å¯¾ãã¦ãé常ã¯å®è¡ããå½ä»¤ããåºåãããå
å®¹ã¯æ¨æºåºåã«æ¸ãè¾¼ã¾ãã¾ãã
å²ãè¾¼ã¿æå (interrupt characterãæ®é㯠Control-C ã Delete) ã䏿¬¡ã¾ãã¯äºæ¬¡ããã³ããã«å¯¾ãã¦ã¿ã¤ãããã¨ãå
¥åãåãæ¶ããã¦ä¸æ¬¡ããã³ããã«æ»ãã¾ãã [1] ã³ãã³ãã®å®è¡ä¸ã«å²ãè¾¼ã¿æåãã¿ã¤ããã㨠KeyboardInterrupt ä¾å¤ãéåºããã¾ãããã®ä¾å¤ã¯ try æã§å¦çã§ãã¾ãã
16.1.2. å®è¡å¯è½ãª Python ã¹ã¯ãªãã¶
BSD 風㮠Unix ã·ã¹ãã ã§ã¯ãPython ã¹ã¯ãªããã¯ã·ã§ã«ã¹ã¯ãªããã®ããã«ç´æ¥å®è¡å¯è½ã«ã§ãã¾ãããããè¡ãã«ã¯ã以ä¸ã®è¡
#!/usr/bin/env python3
(ããã§ã¯ã¤ã³ã¿ããªã¿ãã¦ã¼ã¶ã® PATH ä¸ã«ããã¨ä»®å®ãã¦ãã¾ã) ãã¹ã¯ãªããã®å
é ã«ç½®ããã¹ã¯ãªãããã¡ã¤ã«ã«å®è¡å¯è½ã¢ã¼ããè¨å®ãã¾ãã #! ã¯ãã¡ã¤ã«ã®æåã®ï¼æåã§ãªããã°ãªãã¾ããããã©ãããã©ã¼ã ã«ãã£ã¦ã¯ããã®æåã®è¡ãçµç«¯ããæ¹è¡æåã Windows å½¢å¼ ('\r\n') ã§ã¯ãªãã Unixå½¢å¼('\n')ã§ãªããã°ãªããªããã¨ãããã¾ããããã·ã¥ã¾ãã¯ãã³ãæåãããªãã¡ '#' ã¯ãPython ã§ã¯ã³ã¡ã³ããæ¸ãå§ããããã«ä½¿ããã¦ãããã¨ã«æ³¨æãã¦ãã ããã
chmod ã³ãã³ãã使ãã°ãã¹ã¯ãªããã«å®è¡ã¢ã¼ããå®è¡æ¨©éãä¸ãããã¨ãã§ãã¾ãã
$ chmod +x myscript.py
Windows ã§ã¯ã"å®è¡ã¢ã¼ã" ã®ãããªæ¦å¿µã¯ããã¾ãããPython ã®ã¤ã³ã¹ãã¼ã©ã¼ã¯èªåçã« .py ãã¡ã¤ã«ã python.exe ã«é¢é£ä»ããã®ã§ãPython ãã¡ã¤ã«ãããã«ã¯ãªãã¯ããã¨ãããã¹ã¯ãªããã¨ãã¦å®è¡ãã¾ãã.pyw æ¡å¼µåã(訳注: pythonw.exe ã«)é¢é£ä»ããããé常ã³ã³ã½ã¼ã«ã¦ã£ã³ãã¦ãæå¶ãã¦å®è¡ãã¾ãã
16.1.3. 対話ã¢ã¼ãç¨ã®èµ·åæå®è¡ãã¡ã¤ã«Â¶
Python ã対話çã«ä½¿ãã¨ãã«ã¯ãã¤ã³ã¿ããªã¿ãèµ·åãã度ã«å®è¡ãããä½ããã®æ¨æºçãªã³ãã³ããããã¨ä¾¿å©ãªãã¨ãããããã¾ãããããè¡ãã«ã¯ã PYTHONSTARTUP ã¨å¼ã°ããç°å¢å¤æ°ããã¤ã³ã¿ããªã¿èµ·åæã«å®è¡ãããã³ãã³ããå
¥ã£ããã¡ã¤ã«åã«è¨å®ãã¾ãããã®æ©è½ã¯ Unix ã·ã§ã«ã® .profile ã«ä¼¼ã¦ãã¾ãã
ãã®ãã¡ã¤ã«ã¯å¯¾è©±ã»ãã·ã§ã³ã®ã¨ãã ãèªã¿åºããã¾ãã Python ãã³ãã³ããã¹ã¯ãªããããèªã¿åºãã¦ããã¨ããã /dev/tty ãã³ãã³ãã®å
¥åå
ã¨ãã¦æç¤ºçã«æå®ããã¦ãã(ãã®å ´å対話çã»ãã·ã§ã³ã®ããã«åä½ãã¾ã) ããã§ã¯ãªã å ´åã«ã¯ãã®ãã¡ã¤ã«ã¯èªã¿åºããã¾ããããã¡ã¤ã«å
ã®ã³ãã³ãã¯ã対話çã³ãã³ããå®è¡ãããåå空éã¨åãåå空éå
ã§å®è¡ããã¾ãããã®ããããã¡ã¤ã«å
ã§å®ç¾©ããã¦ããã import ããããªãã¸ã§ã¯ãã¯ããã®ã¾ã¾å¯¾è©±ã»ãã·ã§ã³å
ã§ä½¿ããã¨ãã§ãã¾ããã¾ãããã®ãã¡ã¤ã«å
ã§ sys.ps1 ã sys.ps2 ã夿´ãã¦ãããã³ããã夿´ãããã¨ãã§ãã¾ãã
ããç¾å¨ã®ãã£ã¬ã¯ããªãã追å ã§ã¹ã¿ã¼ãã¢ãããã¡ã¤ã«ãèªã¿åºãããã®ãªããã°ãã¼ãã«ã®ã¹ã¿ã¼ãã¢ãããã¡ã¤ã«ã®ä¸ã« if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) ã®ãããªããã°ã©ã ãæ¸ããã¨ãã§ãã¾ããã¹ã¯ãªããä¸ã§ã¹ã¿ã¼ãã¢ãããã¡ã¤ã«ã使ãããã®ãªãã以ä¸ã®ããã«ãã¦ã¹ã¯ãªããä¸ã§æç¤ºçã«å®è¡ããªããã°ãªãã¾ãã:
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
16.1.4. ã«ã¹ã¿ãã¤ãºç¨ã¢ã¸ã¥ã¼ã«Â¶
Python ã¯ã¦ã¼ã¶ã¼ã Python ãã«ã¹ã¿ãã¤ãºããããã®2ã¤ã®ããã¯ã sitecustomize 㨠usercustomize ãæä¾ãã¦ãã¾ãããããã©ã®ããã«åä½ãã¦ããããç¥ãã«ã¯ãã¾ãã¯ã¦ã¼ã¶ã¼ã® site-packages ãã£ã¬ã¯ããªã®å ´æãè¦ã¤ããå¿ è¦ãããã¾ããPython ãèµ·åãã¦æ¬¡ã®ã³ã¼ããå®è¡ãã¦ãã ãã:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'
usercustomize.py ããã®ãã£ã¬ã¯ããªã«ä½æãã¦ãããã§ãããããã¨ããã¹ã¦æ¸ããã¨ãã§ãã¾ãããã®ãã¡ã¤ã«ã¯èªåã¤ã³ãã¼ããç¡å¹ã«ãã -s ãªãã·ã§ã³ã使ããªãéããå
¨ã¦ã® Python ã®èµ·åæã«å®è¡ããã¾ãã
sitecustomize ã¢ã¸ã¥ã¼ã«ãåãããã«åä½ãã¾ãããä¸è¬çã«ã³ã³ãã¥ã¼ã¿ã¼ã®ç®¡çè
ã«ãã£ã¦ãã°ãã¼ãã«ã® site-packages ãã£ã¬ã¯ããªã«ä½æããã usercustomize ããå
ã«ã¤ã³ãã¼ãããã¾ãã詳細㯠site ã¢ã¸ã¥ã¼ã«ã®ããã¥ã¡ã³ããåç
§ãã¦ãã ããã
èæ³¨