1. ホーム
  2. python

[解決済み] Pythonの終了コマンド - なぜこんなにたくさんあるのか、そしてそれぞれはいつ使うべきなのか?

2022-03-16 02:48:47

質問

pythonはスクリプトの実行を停止するための様々なコマンドをサポートしているようです。
私が見つけた選択肢は quit() , exit() , sys.exit() , os._exit()

何か見落としはありませんか? それぞれの違いは何ですか?また、どのような場合に使用するのでしょうか?

解決方法は?

機能 <上 * quit() , exit() および sys.exit() は同じように機能します。 SystemExit 例外が発生します。 ということを除けば、実質的な違いはありません。 sys.exit() は常に利用可能ですが exit()quit()site モジュールがインポートされている場合。

os._exit() 関数は特殊で、クリーンアップ関数を呼び出さずにすぐに終了します (たとえば、バッファをフラッシュしません)。 これは、非常に特殊な用途のために設計されています。 os.fork() を呼び出します。

結論

  • 使用方法 exit() または quit() をREPLで実行します。

  • 使用方法 sys.exit() はスクリプトで、または raise SystemExit() を使用します。

  • 使用方法 os._exit() を呼び出した後に終了する子プロセスに使用します。 os.fork() .

これらはすべて引数なしで呼び出すことができ、また、例えば終了ステータスを指定することもできます。 exit(1) または raise SystemExit(1) を実行すると、ステータス1で終了します。ポータブルプログラムは、0-255の範囲の終了ステータスコードに制限されることに注意してください。 raise SystemExit(256) 多くのシステムで、これは切り捨てられ、あなたのプロセスは実際にはステータス 0 で終了することになります。

脚注

* 実は quit()exit() は呼び出し可能なインスタンスオブジェクトですが、関数と呼んでも問題ないかと思います。