1. はじめに
Pythonを学習していると、スクリプトを終了させるための関数としてexit()
やquit()
を見かけることがあります。これらは一見同じように見えますが、実は使いどころや内部的な違いがあります。
本記事では、「Python|exit()関数とquit()関数の使い方と違い」というテーマで、これらの関数の使い方を丁寧に解説しつつ、それぞれの違いや注意点を紹介します。
この記事を読めば、以下のことがわかります。
exit()
とquit()
の基本的な使い方- それぞれの関数の役割と違い
- 実際の使用場面や注意点
これからPythonのスクリプトを書く上で、明示的にプログラムを終了させる場面に出会うことは多々あります。そうした場面で混乱しないために、しっかりと理解しておきましょう。
2. Pythonにおける exit()関数 と quit()関数 の基本解説
2-1. exit()とquit()の概要
Pythonには、プログラムの実行を途中で終了させたいときに使える関数として、 exit() と quit() が用意されています。これらは本質的には同じもので、site
モジュールによって提供されており、インタラクティブシェル用に設計されています。
2-2. 基本的な使い方
以下のように、どちらも同じように使えます。
exit()
または、
quit()
実行結果:
(スクリプトの実行が停止します)
これらはPythonインタプリタを終了させることが目的です。ただし、exit()
やquit()
は、スクリプト内での利用には向いていません。その理由は次のセクションで解説します。
3. よくある使い方・応用例
3-1. exit() や quit() を使う主な場面
exit() や quit() は、主に以下のような場面で使われます。
- Pythonインタプリタ(対話環境)を終了する
- Jupyter NotebookやIDLEなどでセッションを終える
例えば、Jupyter Notebookでスクリプトの動作確認をしていて、「ここで終わらせたい」という時に使うと便利です。
3-2. スクリプト内での使用例
スクリプト内で使いたい場合、実際にはsys.exit()
を使うのが一般的です。しかし、参考としてexit()をスクリプト内で使う例を紹介します。
print("処理開始")
# 処理を中断したいときに exit() を呼び出す
exit()
print("この行は表示されません")
実行結果:
処理開始
3-3. sys.exit() を使った正しい終了方法
exit()
やquit()
は、対話環境で使うための関数です。スクリプト内での正式な終了処理にはsys.exit()
を使いましょう。
import sys
print("処理開始")
# エラーメッセージを指定して終了
sys.exit("異常終了:エラーが発生しました")
print("この行は表示されません")
実行結果:
処理開始
異常終了:エラーが発生しました
このように、終了メッセージを表示させたり、エラーコードを返したりする柔軟な制御が可能です。
4. exit() / quit() の注意点・エラー対策
4-1. スクリプト内では NameError が発生することも
実は、exit() や quit() は、対話環境(REPL)では使えますが、スクリプトファイル内で直接実行すると、NameError
が発生することがあります。
# sample.py というスクリプトで実行
exit()
実行結果:
NameError: name 'exit' is not defined
これは、exit()がsite.py
によって提供されているため、対話環境以外では定義されていない場合があるためです。
4-2. スクリプト終了には sys.exit() を使おう
Pythonスクリプト内での終了処理は、原則としてsys.exit()
を使うべきです。exit()
やquit()
は、教育用途やインタラクティブ環境用の“見た目がやさしいエイリアス”に過ぎません。
5. まとめ
この記事では、Pythonのexit()関数とquit()関数の使い方と違いについて解説しました。
exit()
とquit()
は対話環境用に用意された終了関数- スクリプト内では
sys.exit()
を使用すべき - スクリプトで
exit()
を使うとNameError
になることもある
学習のコツ:Pythonでは「便利な見た目」と「本番用の実装」が違うことがよくあります。どんな関数が裏で動いているのかに目を向けると、理解が一段深まりますよ。
実務での活用例:CLIツールやバッチ処理などでは、sys.exit()
で明確に終了コードを返すことで、他の処理と連携しやすくなります。