Pythonにはプログラムを終了するための2つの関数、exit()
とsys.exit()
があります。これらの関数は似ていますが、使用する状況によって適切な関数が異なります。
exit()
exit()
はPythonの対話シェルで使用されます。この関数は標準入力を閉じてSystemExit
例外を発生させ、その結果として対話シェルが終了します。
class Quitter(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return 'Use %s() or %s to exit' % (self.name, eof)
def __call__(self, code=None):
try:
sys.stdin.close()
except:
pass
raise SystemExit(code)
sys.exit()
一方、sys.exit()
はsys
モジュールが提供する関数で、SystemExit
例外を発生させます。これはプログラムを終了しようとしていることをPython処理系に伝えるものであり、その結果としてプログラムが終了します。
def sys_exit(PyObject *self, PyObject *args):
PyObject *exit_code = 0;
if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code))
return NULL;
PyErr_SetObject(PyExc_SystemExit, exit_code);
return NULL;
まとめ
exit()
とsys.exit()
はどちらもプログラムを終了させるための関数ですが、使用する状況によって適切な関数が異なります。対話シェルでプログラムを終了させる場合はexit()
を、スクリプト内でプログラムを終了させる場合はsys.exit()
を使用します。