address Logo

Python IDLE

目次

SystemExit

2008/03/07

Python の IDLE 環境は初心者向けの環境である。本来ならば動作するはずの Python のプログラムが IDLE 環境で正しく動作しない場合がある。

次の図は EDLE 環境で sys.exit() を実行した場合にエラーが発生する事を示している。

a

これはバグか? バグだとしても除去しにくいバグである。
sys.exit() は Python を終了する事を意味している。ところが IDLE の Python シェルもまた Python で動いているので sys.exit() が実行されるという事は IDLE の全体が終了する事を意味している。しかしそれは如何にも都合が悪い。EDLE はそれを辛うじて防いでいると言える。

同様な問題は Tkinter の mainloop で発生し、Python がハングする。

Traceback (most recent call last):
  File "/Volumes/kenji/edu/prog2/2007/05m3109.py", line 55, in <module>
    mainloop()
  File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 328, in mainloop
    _default_root.tk.mainloop(n)
  File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 1405, in __call__
    raise SystemExit, msg
SystemExit

このような問題を避けるため Python IDLE のメニューには "Restart Shell" が存在する。

b

Ref