1. Home

  2. /
  3. プログラミング
  4. /
  5. pythonで簡単プログラミング
  6. /
  7. 【基本】python : 自身のプログラムを終了させる終了関数

【基本】python : 自身のプログラムを終了させる終了関数

プログラムを終了させるexit pythonで簡単プログラミング

#python #プログラム終了関数 #exit

この記事では、pythonにおいて、プログラムを実行した時に、自身のプログラムを終了させる関数について、わかりやすく解説します。

本記事では、主としてWindows、および、python3を前提にしています。

本記事を読むにあたって

本記事内のプログラムを実践するには、下記の記事に従って環境を準備してください。

・ 【第2回】pythonのプログラミング環境を作る

3種類もある終了関数

pythonでは、終了関数は以下の3種類あります。
1.sysモジュールのexit関数(sys.exit)
2.osモジュールの_exit関数(os._exit)
3.組み込み関数exit

以降の見出しで、上記それぞれに対して解説します。

sysモジュールのexit関数(sys.exit)

通常はsys モジュール のexit関数を使用します。
この関数は、自身のプログラムを実行している プロセス を終了させます。
終了させるにあたって、必要な後始末を行います。

<exit.py>

import sys           # pythonのシステム関連のモジュールをインポート

sys.exit(-1)         # 終了コード -1 で終了する

実行すると以下のようになります。

(base) PS D:\blog\exit> python .\exit.py
(base) PS D:\blog\exit> echo $?
False
(base) PS D:\blog\exit> echo $LastExitCode
-1

Anaconda Powershell Prompt での実行結果ですので、
“echo $?”で、成功(True)か失敗(0)か、
“echo $LastExitCode”で、終了コードが返ってきたことが確認できます。

コマンドプロンプト の場合は、”echo %ERRORLEVEL%”で、終了コードが確認できます。

Linux の bash などの コマンドシェル では、”echo $?” だけで、終了コードが確認できます。

後述の 組み込み関数 であるexit関数ではなく、sys.exit関数を使用することを推奨します。

exit関数でも手前味噌で作成したプログラムの場合、sys.exit関数と変わらない挙動になり、何も問題ありません。
しかし、exit関数はpythonの対話型入力機能と密接な関係があり、pythonの対話型入力機能を使わないで実行するケースの場合に、思わぬ動作をすることがあります。
終了関数は使用頻度が高いため、クセになってexit関数を多用してしまいますので、最初から後々も考えて良い方を選択しましょう。

osモジュールの_exit関数(os._exit)

前述のsys.exit関数では、プログラム終了時にきちんと後始末を行って終了します。
それに対して、osモジュールの_exit関数は、後始末せずに即刻プログラムを終了します。
“exit”の前に“_”アンダーバーがついていますのでご注意ください。

<exit.py>

import os            # OS関連のモジュールをインポート

os._exit(-1)          # 終了コード -1 で終了する

os._exit関数は、後始末をしている間にエラーが起きても困るとか、後始末に時間がかかっても困るというような、緊急で終了させる必要がある場合に用いられます。

実行すると以下のようになります。

(base) PS D:\blog\exit> python .\exit.py
(base) PS D:\blog\exit> echo $?
False
(base) PS D:\blog\exit> echo $LastExitCode
-1

後始末には、例えばファイルのクローズ処理があります。
ファイルはオープンした後、クローズせずに終了すると、編集した内容が保存されずに終了してしまいます。
通信を行う処理が合った場合は、相手にクローズの連絡なく終了することになり、相手がまだ繋がっていると思って処理を続けてしまいます。
後始末せずに終了するということは、作業中に行方不明になったことと同じになります。

組み込み関数exit

組み込み関数 としてexit関数があり、 インポート しなくても使えるため便利ですが、前述のとおり、後々のことを考えると推奨ではありません。

<exit.py>

exit(-1)

実行すると以下のようになります。

(base) PS D:\blog\exit> python .\exit.py
(base) PS D:\blog\exit> echo $?
False
(base) PS D:\blog\exit> echo $LastExitCode
-1

本記事では、pythonの対話型入力機能を使って実行していますので、問題なく実行できています。

最後に

本記事では、プログラミングの基本の1つである終了関数の種類について解説しました。

1.sysモジュールのexit関数(sys.exit) ・・・ きれいに後始末をして終了させる
2.osモジュールの_exit関数(os._exit) ・・・ 後始末をしない代わりに即刻終了させる
3.組み込み関数exit   ・・・ 対話型実行機能を使う場合に使い、きれいに後始末をして終了させる

次回は別の基本について解説しますので、ご期待ください!

この記事へのお問い合わせや、無料のサポート、一歩踏み込んだ有料サポートが必要な場合は、ホームページからメールで受け付けています。お気軽にご連絡ください。

コメント

タイトルとURLをコピーしました