Pythonのexit(0)とexit(1)の違い


167

違いは何だexit(0)exit(1)Pythonでは?

見回してみましたが、これらの行に特定の質問は見つかりませんでした。既に回答されている場合は、リンクで十分です。


9
exit()docsへのリンクは次のとおりです。
Ryne Everett


exit(0)この質問で議論されているものとアンダースコア付きのものがあることに気づいたばかりですが_exit(0)、違いはここ
カルダモン

これらのコードの良い点ifは、bashラッパーのステートメントで直接使用できるため、Pythonプログラムが成功したかどうか、またはゼロ以外のステータスが発生したかどうかに関係なく、さらにアクションを実行できることです。
SDsolar

0はFalseで、1はPythonでTrueの場合は奇妙なが、あなたは数字が逆の意味だろうと思うだろう
モニカHeddneck

回答:


248

0と1は終了コードです。

exit(0) エラー/問題のないクリーンな終了を意味します

exit(1) 問題/エラー/問題があったことを意味し、プログラムが終了します。

これはPython固有ではなく、かなり一般的です。ゼロ以外の終了コードは異常終了として扱われ、エラーコードは問題の内容を示す場合があります。エラーコード0は、正常終了を意味します。

これは、他のプログラム、シェル、呼び出し元などがプログラムで何が起こったかを知り、それに応じて続行するのに役立ちます。


10
そしてexit(-1)はどうですか?
ファイザン、2014

16
@Faizan:終了コードはUnixでは8ビット値です。を呼び出したexit(-1)場合、値は次のようになります。exit(255)最下位の8ビットが呼び出し側プログラム(シェルなど)に中継されます。
Jonathan Leffler、2015

4
docsによるとexit()siteモジュールによって追加されるため、プログラムでは使用しないでください。別のモジュールをインポートしたくない場合はsys.exit()、代わりにを使用しraise SystemExitます。
daviewales

2
Unix / Linuxからの終了コードのため、Pythonの条件では0がTrue、1がFalseの値であると考えていました。
vlyalcin

19

これは、プログラムの実行が終了したときのプログラムの終了ステータスを決定します(通常、成功の場合は0、エラーの場合は1)。

これはPythonに固有のものではなく、正確な効果はオペレーティングシステムとプログラムの呼び出し方法によって異なります(ただし、99%の場合、Pythonスクリプトを実行しているだけであれば問題ではありません)。


12

Pythonを含むすべてのCプログラムの標準的な規則は、exit(0)成功を示すため、exit(1)または失敗を示すために(1..255の範囲の)他のゼロ以外の値です。0..255の範囲外の値は256を法として扱われます(終了ステータスは8ビット値に格納されます)。時々、それは署名されたものとして扱われます(そのため、-128、-127などが表示される場合があります)が、通常は、署名されていないものとして扱われます。

このステータスは、Pythonを呼び出したコードで利用できます。この規則はプラットフォーム全体に適用されますが、ゼロ以外の終了ステータスの意味はプラットフォームによって異なる場合があります。


7

exit()関数に渡す番号は、単にプログラムの戻りコードであり、オペレーティングシステムに渡されます。プログラムの観点からは違いはありません。どちらの場合も実行は終了し、関数に提供された値はOSに渡されます。ただし、一部のツールやスクリプトでは、プログラムの終了コードが考慮されます。ほとんどのツールは、成功すると0を返し、エラーを示すためにゼロ以外を返します。

そのため、プログラムがスクリプト、自動化ツール、またはリターンコードを考慮した他のソフトウェア(IDEなど)から実行される場合は、何を返すかに注意する必要があります。

疑わしい場合は、0を返すだけですべてが正常であることを示します。


6

exit(0):これにより、プログラムは正常に終了して終了します。

exit(1):これにより、プログラムはシステム固有の意味で終了します。

多くのシステムでは、exit(1)何らかの障害を通知しますが、保証はありません。

私が覚えているように、C標準は3つの標準終了値のみを認識します。

  • EXIT_SUCCESS -正常終了
  • EXIT_FAILURE -失敗した終了
  • 0 - と同じ EXIT_SUCCESS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.