exit関数と終了ステータス

Pythonのexit関数について

Pythonには、3つのexit関数があります。

  • 組み込み関数exit(status=None):Pythonインタープリタを終了するための関数です。標準入力をcloseし、SystemExit(status)例外(後述)を送出することでPythonインタープリタを終了します。exit関数は、Pythonインタープリタ起動時にsiteモジュールのsetquit関数で定義されます。str(exit)で使い方がわかります。
  • sys.exit(status=None):Pythonを終了するための関数です。SystemExit(status)例外(後述)を送出することでPythonを終了します。
  • os._exit(status=None):Pythonを終了するための関数です。例外処理をせずに直ちに終了します。

参考:sys.exit

PythonのSystemExit例外について

SystemExit(status=None)例外が発生すると、tryステートメントのexcept節やfinally節があれば適切に処理します。 BaseExceptionを継承しており、Exceptionではキャッチされません。 例外が処理されないと、スタックトレースを表示せずに Pythonを終了します。

引数のstatusの値により次のように処理されます。

  • None:終了ステータスを0とします。
  • 整数値:終了ステータスを整数値とします。
  • 上記以外のオブジェクト:標準エラー出力にオブジェクトを表示し、終了ステータスを1とします。

プロセスの終了ステータスとは

終了ステータスは、OSで実行中のプロセスから親のプロセスに実行結果を通知される整数値です。リターンコードとも言われます。

0のときは正常終了を意味し、それ以外では異常終了を表します。

OSのシェルからPythonコマンドを実行した場合は、exit関数によりPythonコマンドの実行結果としてシェルに終了ステータスが通知されます。

参考:終了ステータス