この記事では、Pythonのプログラムを終了させるexit関数の使い方を解説します。
Pythonでプログラムを終了させるにはexit()
関数を使いますが、exit()
関数には以下の3つの種類があります。
それでは、それぞれの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()
$
ちなみに、以下のショートカットでも終了させることができます。
Mac = control + D
Window = ctrl + D
sys
モジュールのexit()
関数は、ソースコード内からプログラムを強制終了させるための関数です。オプション引数であるarg
には、整数や他の型のオブジェクトを指定できます。
以下のようにsys
モジュールをインポートして使います。
import sys
sys.exit([arg])
arg
引数を指定することで終了ステータスやエラーメッセージを出力できます。
引数に整数を渡すことで終了ステータスを指定することができます。
# 正常終了
sys.exit(0)
# 異常終了
sys.exit(1)
引数に文字列を渡すことでエラーメッセージとして強制終了時に出力してくれます。終了ステータスは「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プログラムを終了させています。なので、try
ブロック内で処理してもプログラムを終了させることができません。
import sys
try:
sys.exit()
except:
pass
# 実行される
print('Hello!')
実行結果
Hello!
それでは、サンプルコードでsys.exit
関数の挙動を見ていきます。下記のコードは、input
関数で値を入力してもらい、その値によって処理を分岐させるコードです。
exit.py
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('プログラム終了')
それぞれの実行パターン毎に結果を見ていきます。
sys.exit
関数が処理されていない通常のパターンです。「プログラム終了」まで処理されているのがわかります。
$ python3 exit.py
value: hello
helloが入力されました!
プログラム終了
$ echo $?
0
sys.exit
関数が処理され、Pythonが終了したことにより「プログラム終了」が出力されていません。
$ python3 exit.py
value: exit
exit(0)
$ echo $?
0
こちらのパターンでもsys.exit
関数が処理され、Pythonが終了したことにより「プログラム終了」が出力されていません。終了ステータスは「1」が返されました。
$ python3 exit.py
value: error
exit(1)
$ echo $?
1
sys.exit
関数の引数に指定した文字列が、Python終了時に出力されているのがわかります。終了ステータスは「1」です。
$ python3 exit.py
value: error_message
exit(エラーメッセージ)
エラー発生
$ echo $?
1
os._exit
関数を使うことでスレッドの保持している資源を解放したり、バッファをフラッシュしたりせずに強制終了します。
例えば、os.fork
関数で作成した子プロセス内で使用します。
Linkos.fork()
この記事では、Pythonのexit()
関数について解説しました!
exit()
関数は、プログラムを終了させたり、デバッグなどにも使うことができました。
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ