Python は、スクリプトの実行を停止するためのさまざまなコマンドをサポートしているようです。
私が見つけた選択肢は次の とおりquit()
です。exit()
sys.exit()
os._exit()
見逃したことがありますか?それらの違いは何ですか?それぞれいつ使うの?
Python は、スクリプトの実行を停止するためのさまざまなコマンドをサポートしているようです。
私が見つけた選択肢は次の とおりquit()
です。exit()
sys.exit()
os._exit()
見逃したことがありますか?それらの違いは何ですか?それぞれいつ使うの?
それらについていくつかの情報を提供しましょう:
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
>>>
ただし、 likeは、プロダクション コードで使用するのは不適切quit
でexit
あると考えられており、インタープリターで使用するために予約する必要があります。site
これもモジュールに依存しているためです。
sys.exit()
もSystemExit
例外を発生させます。quit
これは、その点ではand と同じであることを意味しexit
ます。
ただし、これら 2 つとは異なりsys.exit
、製品コードでの使用に適していると考えられています。これは、sys
モジュールが常に存在するためです。
os._exit()
クリーンアップ ハンドラの呼び出し、stdio バッファのフラッシュなどを行わずにプログラムを終了します。したがって、これは標準的な終了方法ではなく、特別な場合にのみ使用する必要があります。これらの最も一般的なものは、によって作成された子プロセスにありos.fork
ます。
与えられた 4 つのメソッドのうち、この 1 つだけが独自の機能を持っていることに注意してください。
要約すると、4 つのメソッドすべてがプログラムを終了します。ただし、最初の 2 つは製品コードで使用するのは不適切であると考えられており、最後の 2 つは特殊なシナリオでのみ使用される非標準の汚い方法です。したがって、プログラムを正常に終了したい場合は、3 番目の方法を使用しますsys.exit
。
または、私の意見ではsys.exit
、舞台裏で実行することを直接実行して実行することもできます。
raise SystemExit
この方法では、最初にインポートする必要はありませんsys
。
ただし、この選択は単にスタイル上のものであり、純粋にあなた次第です.
関数* quit()
、exit()
、およびsys.exit()
関数は同じように機能します: これらはSystemExit
例外を発生させます。したがって、実際の違いはありませんが、それsys.exit()
は常に利用可能ですがexit()
、モジュールがインポートされたquit()
場合にのみ利用可能です.site
このos._exit()
関数は特殊で、クリーンアップ関数を呼び出さずにすぐに終了します (たとえば、バッファをフラッシュしません)。これは、高度に特殊化されたユースケース向けに設計されています...基本的には、os.fork()
呼び出し後の子のみです。
exit()
orquit()
を REPL で使用します。
sys.exit()
スクリプトで使用するか、必要にraise SystemExit()
応じて使用します。
os._exit()
への呼び出し後に子プロセスが終了するために使用しos.fork()
ます。
これらはすべて引数なしで呼び出すことも、終了ステータスを指定することもできます。たとえば、ステータス 1 で終了することexit(1)
もできますraise SystemExit(1)
。移植可能なプログラムは、0 ~ 255 の範囲の終了ステータス コードに制限されていることに注意してください。raise SystemExit(256)
切り捨てられ、プロセスは実際にはステータス 0 で終了します。
*実はquit()
とexit()
は呼び出し可能なインスタンスオブジェクトですが、関数と呼んでもいいと思います。
os._exit()
:
exit(0)
:
exit(1)
:
sys.exit()
:
quit()
:
基本的にそれらはすべて同じことをしますが、それはあなたが何のためにそれをしているのかによっても異なります.
私はあなたが何かを忘れたとは思わない.quit()
またはに慣れることをお勧めしexit()
ます.
主に、大きなファイルを使用している場合、または python を使用して端末を制御している場合に使用しますsys.exit()
。os._exit()
それ以外の場合は、主に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__
これは基本的に、プロンプトで入力した式の をインタプリタが出力するという事実を利用した単なるハックです。