Quelle est la différence entre exit(0)et exit(1)en Python?
J'ai essayé de regarder autour de moi mais je n'ai pas trouvé de question spécifique sur ces lignes. Si vous avez déjà répondu, un lien serait suffisant.
Je viens de réaliser qu'il y a exit(0)ce qui est discuté dans cette question et aussi un avec un trait de soulignement _exit(0), la différence est expliquée ici
cardamome
La bonne chose à propos de ces codes est qu'ils peuvent être utilisés directement dans une ifinstruction dans un bashwrapper, de sorte que des mesures supplémentaires peuvent être prises que le programme Python réussisse ou non ou s'il a soulevé un statut différent de zéro.
SDsolar
bizarre, si 0 est faux et 1 est vrai en Python, vous penseriez que les chiffres signifieraient le contraire
Monica Heddneck
Réponses:
249
0 et 1 sont les codes de sortie.
exit(0) signifie une sortie propre sans aucune erreur / problème
exit(1) signifie qu'il y a eu un problème / une erreur / un problème et c'est pourquoi le programme se ferme.
Ce n'est pas spécifique à Python et c'est assez courant. Un code de sortie différent de zéro est traité comme une sortie anormale et, parfois, le code d'erreur indique la nature du problème. Un code d'erreur zéro signifie une sortie réussie.
Ceci est utile pour les autres programmes, shell, appelant, etc. pour savoir ce qui s'est passé avec votre programme et procéder en conséquence.
@Faizan: Le code de sortie est une valeur 8 bits sous Unix. Si vous invoquez exit(-1), la valeur est équivalente à exit(255)- les 8 bits les moins significatifs sont relayés vers le programme appelant (shell ou autre).
Jonathan Leffler
4
Notez que selon la documentation , exit()est ajouté par le sitemodule, et ne doit pas être utilisé par les programmes. À la place, utilisez sys.exit(), ou même raise SystemExit, si vous ne souhaitez pas importer un autre module.
daviewales
2
En raison des codes de sortie d'Unix / Linux, je pensais que 0 est True et 1 est False dans les conditions Python.
vlyalcin le
19
Cela détermine l' état de sortie du programme à la fin de son exécution (généralement, 0 en cas de succès et 1 en cas d'erreur).
Ce n'est pas unique à Python, et l'effet exact dépend de votre système d'exploitation et de la façon dont le programme est appelé (bien que 99% du temps, si vous exécutez simplement des scripts Python, cela n'a pas d'importance).
La convention standard pour tous les programmes C, y compris Python, est pour exit(0)pour indiquer le succès, et / exit(1)ou toute autre valeur non nulle (dans la plage 1..255) pour indiquer l'échec. Toute valeur en dehors de la plage 0..255 est traitée modulo 256 (l'état de sortie est stocké dans une valeur 8 bits). Parfois, cela sera traité comme signé (vous pourriez donc voir -128, -127, etc.) mais plus généralement, il est traité comme non signé.
Ce statut est disponible pour le code qui a appelé Python. Cette convention s'applique à toutes les plates-formes, bien que la signification d'un statut de sortie différent de zéro puisse varier selon les plates-formes.
Le numéro que vous passez à la exit()fonction est simplement le code de retour de votre programme, qui est donné au système d'exploitation. Du point de vue de votre programme, il n'y a pas de différence: l'exécution se terminera dans les deux cas et la valeur fournie à la fonction sera donnée à l'OS. Mais certains outils et scripts prennent en compte le code de sortie du programme. La plupart des outils renvoient 0 lorsqu'ils réussissent et différent de zéro pour indiquer une erreur.
Ainsi, si votre programme sera exécuté à partir d'un script, d'un outil automatisé ou de tout autre logiciel prenant en compte le code retour (comme un IDE), vous devez faire attention à ce que vous retournez.
En cas de doute, renvoyez simplement 0 pour indiquer que tout va bien.
exit()
dans la documentation , qui m'a pris une éternité à trouver.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
place, utilisezsys.exit()
exit(0)
ce qui est discuté dans cette question et aussi un avec un trait de soulignement_exit(0)
, la différence est expliquée iciif
instruction dans unbash
wrapper, de sorte que des mesures supplémentaires peuvent être prises que le programme Python réussisse ou non ou s'il a soulevé un statut différent de zéro.Réponses:
0 et 1 sont les codes de sortie.
exit(0)
signifie une sortie propre sans aucune erreur / problèmeexit(1)
signifie qu'il y a eu un problème / une erreur / un problème et c'est pourquoi le programme se ferme.Ce n'est pas spécifique à Python et c'est assez courant. Un code de sortie différent de zéro est traité comme une sortie anormale et, parfois, le code d'erreur indique la nature du problème. Un code d'erreur zéro signifie une sortie réussie.
Ceci est utile pour les autres programmes, shell, appelant, etc. pour savoir ce qui s'est passé avec votre programme et procéder en conséquence.
la source
exit(-1)
, la valeur est équivalente àexit(255)
- les 8 bits les moins significatifs sont relayés vers le programme appelant (shell ou autre).exit()
est ajouté par lesite
module, et ne doit pas être utilisé par les programmes. À la place, utilisezsys.exit()
, ou mêmeraise SystemExit
, si vous ne souhaitez pas importer un autre module.Cela détermine l' état de sortie du programme à la fin de son exécution (généralement, 0 en cas de succès et 1 en cas d'erreur).
Ce n'est pas unique à Python, et l'effet exact dépend de votre système d'exploitation et de la façon dont le programme est appelé (bien que 99% du temps, si vous exécutez simplement des scripts Python, cela n'a pas d'importance).
la source
La convention standard pour tous les programmes C, y compris Python, est pour
exit(0)
pour indiquer le succès, et /exit(1)
ou toute autre valeur non nulle (dans la plage 1..255) pour indiquer l'échec. Toute valeur en dehors de la plage 0..255 est traitée modulo 256 (l'état de sortie est stocké dans une valeur 8 bits). Parfois, cela sera traité comme signé (vous pourriez donc voir -128, -127, etc.) mais plus généralement, il est traité comme non signé.Ce statut est disponible pour le code qui a appelé Python. Cette convention s'applique à toutes les plates-formes, bien que la signification d'un statut de sortie différent de zéro puisse varier selon les plates-formes.
la source
Le numéro que vous passez à la
exit()
fonction est simplement le code de retour de votre programme, qui est donné au système d'exploitation. Du point de vue de votre programme, il n'y a pas de différence: l'exécution se terminera dans les deux cas et la valeur fournie à la fonction sera donnée à l'OS. Mais certains outils et scripts prennent en compte le code de sortie du programme. La plupart des outils renvoient 0 lorsqu'ils réussissent et différent de zéro pour indiquer une erreur.Ainsi, si votre programme sera exécuté à partir d'un script, d'un outil automatisé ou de tout autre logiciel prenant en compte le code retour (comme un IDE), vous devez faire attention à ce que vous retournez.
En cas de doute, renvoyez simplement 0 pour indiquer que tout va bien.
la source
exit(0)
: Cela provoque la fermeture du programme avec une fin réussie.exit(1)
: Cela provoque la fermeture du programme avec une signification spécifique au système.Sur de nombreux systèmes, cela
exit(1)
signale une sorte de panne, mais il n'y a aucune garantie.Si je me souviens bien, la norme C ne reconnaît que trois valeurs de sortie standard:
EXIT_SUCCESS
- résiliation réussieEXIT_FAILURE
- résiliation infructueuse0
-- pareil queEXIT_SUCCESS
la source