Differenza tra exit (0) e exit (1) in Python


168

Qual è la differenza tra exit(0)e exit(1)in Python?

Ho provato a guardarmi intorno ma non ho trovato una domanda specifica su queste righe. Se è già stata data una risposta, un collegamento sarebbe sufficiente.


9
Ecco un link a exit()nei documenti , che mi ha impiegato un'eternità a trovare.
Ryne Everett,


Appena realizzato c'è quello exit(0)che è discusso in questa domanda e anche uno con un carattere di sottolineatura _exit(0), la differenza è spiegata qui
cardamomo

La cosa bella di questi codici è che possono essere usati direttamente in ifun'istruzione in un bashwrapper, quindi ulteriori azioni possono essere prese se il programma Python ha successo o se ha sollevato uno stato diverso da zero.
SDsolar,

strano, se 0 è falso e 1 è vero in Python, penseresti che i numeri significherebbero il contrario
Monica Heddneck,

Risposte:


249

0 e 1 sono i codici di uscita.

exit(0) significa un'uscita pulita senza errori / problemi

exit(1) significa che c'è stato qualche problema / errore / problema ed è per questo che il programma sta uscendo.

Questo non è specifico di Python ed è piuttosto comune. Un codice di uscita diverso da zero viene trattato come un'uscita anomala e, a volte, il codice di errore indica quale fosse il problema. Un codice di errore zero indica un'uscita corretta.

Questo è utile per altri programmi, shell, chiamanti ecc. Per sapere cosa è successo con il tuo programma e procedere di conseguenza.


10
E che dire dell'uscita (-1)?
Faizan,

16
@Faizan: il codice di uscita è un valore a 8 bit su Unix. Se invochi exit(-1), il valore è equivalente a exit(255): gli 8 bit meno significativi vengono inoltrati al programma chiamante (shell o altro).
Jonathan Leffler,

4
Si noti che secondo i documenti , exit()viene aggiunto dal sitemodulo e non deve essere utilizzato dai programmi. Invece, usa sys.exit(), o anche raise SystemExit, se non vuoi importare un altro modulo.
daviewales,

2
A causa dei codici di uscita di Unix / Linux, stavo pensando che 0 è True e 1 è False value nelle condizioni Python.
vlyalcin

19

Questo determina lo stato di uscita del programma al termine dell'esecuzione (generalmente 0 per successo e 1 per errore).

Non è univoco per Python e l'effetto esatto dipende dal sistema operativo in uso e da come viene chiamato il programma (anche se il 99% delle volte, se si eseguono solo script Python, non importa).


12

La convenzione standard per tutti i programmi C, incluso Python, è per exit(0)indicare il successo e exit(1)qualsiasi altro valore diverso da zero (nell'intervallo 1..255) per indicare il fallimento. Qualsiasi valore al di fuori dell'intervallo 0..255 viene trattato modulo 256 (lo stato di uscita è memorizzato in un valore a 8 bit). A volte, questo verrà trattato come firmato (quindi potresti vedere -128, -127, ecc.) Ma più di solito viene trattato come non firmato.

Questo stato è disponibile per il codice che ha invocato Python. Questa convenzione si applica su tutte le piattaforme, sebbene il significato dello stato di uscita diverso da zero possa variare su piattaforme diverse.


7

Il numero che passi alla exit()funzione è semplicemente il codice di ritorno del tuo programma, che viene dato al sistema operativo. Dal punto di vista del programma, non vi è alcuna differenza: l'esecuzione terminerà in entrambi i casi e il valore fornito alla funzione verrà assegnato al sistema operativo. Ma alcuni strumenti e script tengono conto del codice di uscita del programma. La maggior parte degli strumenti restituisce 0 quando ha esito positivo e diversa da zero per indicare un errore.

Quindi, se il tuo programma verrà eseguito da uno script, uno strumento automatizzato o da qualche altro software che tenga conto del codice di ritorno (come un IDE), devi fare attenzione a ciò che restituisci.

In caso di dubbio, basta restituire 0 per indicare che tutto è OK.


6

exit(0): Ciò provoca la chiusura corretta del programma.

exit(1): Questo provoca l'uscita del programma con un significato specifico del sistema.

Su molti sistemi, exit(1)segnala una sorta di guasto, tuttavia non esiste alcuna garanzia.

Come ricordo, lo standard C riconosce solo tre valori di uscita standard:

  • EXIT_SUCCESS - risoluzione corretta
  • EXIT_FAILURE - risoluzione non riuscita
  • 0 -- uguale a EXIT_SUCCESS
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.