Unterschied zwischen exit (0) und exit (1) in Python
167
Was ist der Unterschied zwischen exit(0)und exit(1)in Python?
Ich habe versucht, mich umzusehen, aber in diesen Zeilen keine spezifische Frage gefunden. Wenn es bereits beantwortet wurde, würde ein Link ausreichen.
Gerade realisiert, dass es gibt, exit(0)was in dieser Frage diskutiert wird und auch eine mit einem Unterstrich _exit(0), der Unterschied wird hier
Kardamom
Das Schöne an diesen Codes ist, dass sie direkt in einer ifAnweisung in einem bashWrapper verwendet werden können, sodass weitere Maßnahmen ergriffen werden können, unabhängig davon, ob das Python-Programm erfolgreich ist oder ob es einen Status ungleich Null ausgelöst hat.
SDsolar
seltsam, wenn 0 in Python falsch und 1 in Python wahr ist, würden Sie denken, dass die Zahlen das Gegenteil bedeuten würden
Monica Heddneck
Antworten:
248
0 und 1 sind die Exit-Codes.
exit(0) bedeutet einen sauberen Ausgang ohne Fehler / Probleme
exit(1) bedeutet, dass es ein Problem / einen Fehler / ein Problem gab und das Programm deshalb beendet wird.
Dies ist nicht Python-spezifisch und ziemlich häufig. Ein Exit-Code ungleich Null wird als abnormaler Exit behandelt, und manchmal gibt der Fehlercode an, um welches Problem es sich handelt. Ein Null-Fehlercode bedeutet einen erfolgreichen Exit.
Dies ist nützlich, damit andere Programme, Shell, Aufrufer usw. wissen, was mit Ihrem Programm passiert ist, und entsprechend vorgehen.
@Faizan: Der Exit-Code ist ein 8-Bit-Wert unter Unix. Wenn Sie aufrufen exit(-1), entspricht der Wert exit(255)- die niedrigstwertigen 8 Bits werden an das aufrufende Programm (Shell oder was auch immer) weitergeleitet.
Jonathan Leffler
4
Beachten Sie, dass nach der Dokumentation , exit()wird durch das zugegebene siteModul, und nicht von Programmen verwendet werden soll. Verwenden Sie stattdessen sys.exit()oder sogar raise SystemExit, wenn Sie kein anderes Modul importieren möchten.
Daviewales
2
Aufgrund von Exit-Codes von Unix / Linux dachte ich, 0 ist wahr und 1 ist falsch unter den Python-Bedingungen.
Vlyalcin
19
Dies bestimmt den Exit - Status des Programms , wenn es Ausführung beendet ist ( in der Regel 0 für Erfolg und 1 für Fehler).
Es ist nicht nur für Python gültig, und die genaue Auswirkung hängt von Ihrem Betriebssystem und dem Aufruf des Programms ab (obwohl es in 99% der Fälle keine Rolle spielt, wenn Sie nur Python-Skripte ausführen).
Die Standardkonvention für alle C-Programme, einschließlich Python, besteht exit(0)darin, Erfolg anzuzeigen, exit(1)oder einen anderen Wert ungleich Null (im Bereich 1..255), um einen Fehler anzuzeigen. Jeder Wert außerhalb des Bereichs 0..255 wird modulo 256 behandelt (der Exit-Status wird in einem 8-Bit-Wert gespeichert). Manchmal wird dies als signiert behandelt (so dass Sie möglicherweise -128, -127 usw. sehen), aber normalerweise wird es als nicht signiert behandelt.
Dieser Status steht dem Code zur Verfügung, der Python aufgerufen hat. Diese Konvention gilt plattformübergreifend, obwohl die Bedeutung des Exit-Status ungleich Null auf verschiedenen Plattformen variieren kann.
Die Nummer, die Sie an die exit()Funktion übergeben, ist einfach der Rückkehrcode Ihres Programms, der dem Betriebssystem gegeben wird. Aus Sicht Ihres Programms gibt es keinen Unterschied: Die Ausführung endet in beiden Fällen, und der der Funktion bereitgestellte Wert wird dem Betriebssystem übergeben. Einige Tools und Skripte berücksichtigen jedoch den Exit-Code des Programms. Die meisten Tools geben 0 zurück, wenn sie erfolgreich sind, und ungleich Null, um einen Fehler anzuzeigen.
Wenn Ihr Programm also über ein Skript, ein automatisiertes Tool oder eine andere Software ausgeführt wird, die den Rückkehrcode berücksichtigt (z. B. eine IDE), müssen Sie bei der Rückgabe vorsichtig sein.
Im Zweifelsfall geben Sie einfach 0 zurück, um anzuzeigen, dass alles in Ordnung ist.
exit()
den Dokumenten , für dessen Suche ich ewig gebraucht habe.The site module (which is imported automatically during startup, except if the -S command-line option is given) adds several constants to the built-in namespace. They are useful for the interactive interpreter shell and should not be used in programs
Verwenden Sie stattdessensys.exit()
exit(0)
was in dieser Frage diskutiert wird und auch eine mit einem Unterstrich_exit(0)
, der Unterschied wird hierif
Anweisung in einembash
Wrapper verwendet werden können, sodass weitere Maßnahmen ergriffen werden können, unabhängig davon, ob das Python-Programm erfolgreich ist oder ob es einen Status ungleich Null ausgelöst hat.Antworten:
0 und 1 sind die Exit-Codes.
exit(0)
bedeutet einen sauberen Ausgang ohne Fehler / Problemeexit(1)
bedeutet, dass es ein Problem / einen Fehler / ein Problem gab und das Programm deshalb beendet wird.Dies ist nicht Python-spezifisch und ziemlich häufig. Ein Exit-Code ungleich Null wird als abnormaler Exit behandelt, und manchmal gibt der Fehlercode an, um welches Problem es sich handelt. Ein Null-Fehlercode bedeutet einen erfolgreichen Exit.
Dies ist nützlich, damit andere Programme, Shell, Aufrufer usw. wissen, was mit Ihrem Programm passiert ist, und entsprechend vorgehen.
quelle
exit(-1)
, entspricht der Wertexit(255)
- die niedrigstwertigen 8 Bits werden an das aufrufende Programm (Shell oder was auch immer) weitergeleitet.exit()
wird durch das zugegebenesite
Modul, und nicht von Programmen verwendet werden soll. Verwenden Sie stattdessensys.exit()
oder sogarraise SystemExit
, wenn Sie kein anderes Modul importieren möchten.Dies bestimmt den Exit - Status des Programms , wenn es Ausführung beendet ist ( in der Regel 0 für Erfolg und 1 für Fehler).
Es ist nicht nur für Python gültig, und die genaue Auswirkung hängt von Ihrem Betriebssystem und dem Aufruf des Programms ab (obwohl es in 99% der Fälle keine Rolle spielt, wenn Sie nur Python-Skripte ausführen).
quelle
Die Standardkonvention für alle C-Programme, einschließlich Python, besteht
exit(0)
darin, Erfolg anzuzeigen,exit(1)
oder einen anderen Wert ungleich Null (im Bereich 1..255), um einen Fehler anzuzeigen. Jeder Wert außerhalb des Bereichs 0..255 wird modulo 256 behandelt (der Exit-Status wird in einem 8-Bit-Wert gespeichert). Manchmal wird dies als signiert behandelt (so dass Sie möglicherweise -128, -127 usw. sehen), aber normalerweise wird es als nicht signiert behandelt.Dieser Status steht dem Code zur Verfügung, der Python aufgerufen hat. Diese Konvention gilt plattformübergreifend, obwohl die Bedeutung des Exit-Status ungleich Null auf verschiedenen Plattformen variieren kann.
quelle
Die Nummer, die Sie an die
exit()
Funktion übergeben, ist einfach der Rückkehrcode Ihres Programms, der dem Betriebssystem gegeben wird. Aus Sicht Ihres Programms gibt es keinen Unterschied: Die Ausführung endet in beiden Fällen, und der der Funktion bereitgestellte Wert wird dem Betriebssystem übergeben. Einige Tools und Skripte berücksichtigen jedoch den Exit-Code des Programms. Die meisten Tools geben 0 zurück, wenn sie erfolgreich sind, und ungleich Null, um einen Fehler anzuzeigen.Wenn Ihr Programm also über ein Skript, ein automatisiertes Tool oder eine andere Software ausgeführt wird, die den Rückkehrcode berücksichtigt (z. B. eine IDE), müssen Sie bei der Rückgabe vorsichtig sein.
Im Zweifelsfall geben Sie einfach 0 zurück, um anzuzeigen, dass alles in Ordnung ist.
quelle
exit(0)
: Dadurch wird das Programm nach erfolgreicher Beendigung beendet.exit(1)
: Dadurch wird das Programm mit einer systemspezifischen Bedeutung beendet.exit(1)
Signalisiert auf vielen Systemen einen Fehler, es gibt jedoch keine Garantie.Soweit ich mich erinnere, erkennt der C-Standard nur drei Standard-Exit-Werte:
EXIT_SUCCESS
- erfolgreiche KündigungEXIT_FAILURE
- erfolglose Kündigung0
-- gleich wieEXIT_SUCCESS
quelle