回答:
それらについていくつかの情報をあげましょう。
quit()単にSystemExit例外を発生させます。
さらに、それを印刷すると、次のメッセージが表示されます。
>>> print (quit)
Use quit() or Ctrl-Z plus Return to exit
>>>
この機能は、Pythonを知らない人を支援するために含まれていました。結局のところ、初心者がPythonを終了しようとする可能性が最も高いものの1つは、と入力することquitです。
それにもかかわらず、製品コードでは使用しないでquitください。これは、モジュールがロードされている場合にのみ機能するためです。代わりに、この関数はインタープリターでのみ使用する必要があります。site
exit()のエイリアスですquit(またはその逆)。それらは単にPythonをよりユーザーフレンドリーにするために一緒に存在します。
さらに、印刷するとメッセージも表示されます。
>>> print (exit)
Use exit() or Ctrl-Z plus Return to exit
>>>
ただし、のようにquit、exit量産コードでの使用は不適切と見なされ、インタープリターでの使用のために予約する必要があります。これもsiteモジュールに依存しているためです。
sys.exit()SystemExit例外も発生します。それは同じようである。この手段quitおよびexitその点で。
ただし、これら2つとは異なりsys.exit、量産コードでの使用は適切と見なされています。これは、sysモジュールが常に存在するためです。
os._exit()クリーンアップハンドラーの呼び出し、stdioバッファーのフラッシュなどを行わずにプログラムを終了します。したがって、これは終了する標準的な方法ではなく、特別な場合にのみ使用する必要があります。これらの最も一般的なものは、によって作成された子プロセスos.forkです。
指定された4つの方法のうち、この方法のみがその方法で一意であることに注意してください。
要約すると、4つのメソッドすべてがプログラムを終了します。ただし、最初の2つは量産コードでの使用が不適切と見なされ、最後の2つは非標準のダーティーな方法であり、特別なシナリオでのみ使用されます。したがって、プログラムを正常に終了する場合は、3番目の方法を使用しますsys.exit。
または、私の意見ではさらに良いことに、sys.exit裏で実行することを直接実行して実行することができます。
raise SystemExit
この方法では、sys最初にインポートする必要はありません。
ただし、この選択はスタイルに基づくものであり、完全にあなた次第です。
quit、exit終了しsys.exitません。
sys.exit()閉鎖するための信頼できる方法ではありません。スレッド内で呼び出された場合、メインスレッドでない限り、そのスレッドのみを終了します。これは、特に一部のインタープリターが目に見えない形で呼び出しをスレッド化するため、呼び出しがメインスレッドになかったためにプログラムが続行する多くの場合につながる可能性があります。
endはそうするコマンドを追加することに投票しraise SystemExitます。BASICのように、そのような単純なものがあり得ない理由を理解しないでください。
print、ステートメントから関数に変更された理由に似ています。構文を追加するのは簡単ですが、そのためには複雑なコストがかかります。
sys.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)あなたの場合、移植性のあるプログラムは、0〜255の範囲で終了ステータスコードに限定されていることを状況1.注意して終了するにはraise SystemExit(256)、多くのシステムでは、この意志切り捨てられ、プロセスは実際にステータス0で終了します。
*実は、quit()およびexit()呼び出し可能なインスタンスオブジェクトですが、私はそれがそれらの機能を呼び出すために大丈夫だと思います。
os._exit():
exit(0):
exit(1):
sys.exit():
quit():
基本的にそれらはすべて同じことを行いますが、それはあなたが何をしているのかにも依存します。
私はあなたが何かを省いたとは思わないので、quit()またはに慣れることを勧めexit()ます。
主に大きなファイルを使用sys.exit()しos._exit()ている場合や、端末を制御するためにpythonを使用している場合に使用します。
それ以外の場合は、主にexit()またはを使用しますquit()。
sys.exit 終了する標準的な方法です。
内部的にはsys.exit単に発生しSystemExitます。ただし、直接呼び出すsys.exitよりも呼び出しの方が慣用的ですSystemExit。
os.exit クリーンアップハンドラーを呼び出さずに直接終了する低レベルのシステムコールです。
quitそしてexit、Pythonプロンプトから簡単に抜け出す方法を提供するためだけに存在します。これは、新しいユーザーまたは誤ってPythonプロンプトを入力し、正しい構文を知りたくないユーザー向けです。彼らは、タイピングを試す可能性がありますexitかquit。これはインタープリターを終了しませんが、少なくとも、出口を示すメッセージを発行します。
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$
これは本質的に、インタプリタ__repr__がプロンプトで入力した式を出力するという事実を利用した単なるハックです。
os.abort()