この記事では、Pythonのプログラムを終了させる方法を解説します。Pythonでプログラムを終了させるには、exit関数を使います。
exit関数は以下の3つがあります。
- exit関数
- sys.exit関数
- os._exit関数
それでは、それぞれのexit関数の使い方を見ていきましょう!
exit関数

exit関数は、対話型シェルを終了させるための関数です。ターミナルやコマンドプロンプトで起動中の対話型シェルを終了させたい場合に使います。
$ python3
Python 3.7.7 (default, Mar 10 2020, 15:43:27)
[Clang 10.0.0 (clang-1000.11.45.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
$
sys.exit関数

sysモジュールのexit関数は、ソースコード内からプログラムを強制終了させるための関数です。
書式
オプション引数argには、整数や他の型のオブジェクトを指定できます。
import sys
sys.exit([arg])
オプション引数
オプション引数argを指定することで、終了ステータスやエラーメッセージを出力することができます。
整数
引数に整数を渡すことで終了ステータスを指定することができます。デフォルトの値は「0」となっています。
# 正常終了
sys.exit(0)
# 異常終了
sys.exit(1)
例えば、0は正常終了で、他の値は異常終了として扱ったりします。
文字列
引数に文字列を渡すことで、エラーメッセージとして強制終了時に出力してくれます。終了ステータスは「1」を返します。
sys.exit('エラーメッセージ')
終了ステータスを確認する
終了ステータスはターミナルやコマンドプロンプト内で、以下のコマンドをコード実行後に使用することで確認できます。
書式
echo $?
サンプル
試しにターミナルでコード実行後に「echo $?」を呼び出してみます。
exit.py
import sys
print('exit 実行')
sys.exit(1)
print('exit 終了')
ターミナル
$ python3 exit.py
exit 実行
$ echo $?
1
「1」が表示されて終了ステータスを確認することができました!
注意: 例外処理内では使えない
sys.exit関数は、SystemExit例外を送出してPythonを終了させています。なので、例外処理内で処理してもプログラムを終了させることができません。
import sys
try:
sys.exit()
except:
pass
# 実行される
print('Hello!')
実行結果
Hello!
sys.exit関数を使ってみる
それでは、サンプルコードでsys.exit関数の挙動を見ていきます。下記のコードはinput関数で値を入力してもらい、その値によって処理を分岐させるコードです。
import sys
value = input('value: ')
if value == 'exit':
print('exit(0)')
sys.exit(0)
elif value == 'error':
print('exit(1)')
sys.exit(1)
elif value == 'error_message':
print('exit(エラーメッセージ)')
sys.exit('エラー発生')
else:
print(f'{value}が入力されました!')
# 問題がなければここまで到達する
print('プログラム終了')
それぞれの実行パターン毎に結果を見ていきます。
通常パターン
$ python3 exit.py
value: hello
helloが入力されました!
プログラム終了
$ echo $?
0
正常終了パターン
$ python3 exit.py
value: exit
exit(0)
$ echo $?
0
異常終了パターン
$ python3 exit.py
value: error
exit(1)
$ echo $?
1
文字列パターン
$ python3 exit.py
value: error_message
exit(エラーメッセージ)
エラー発生
$ echo $?
1
os._exit関数

os._exit関数を使うことで、スレッドの保持している資源を解放したり、バッファをフラッシュしたりせずに強制終了します。
例えば、os.fork関数で作成した子プロセス内で使用します。