web-dev-qa-db-fra.com

Différence entre exit (0) et exit (1) dans Python

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 trouvé aucune question précise sur ces lignes. Si cela a déjà été répondu, un lien serait suffisant.

138
seeker

0 et 1 sont les codes de sortie.

exit(0) signifie une sortie propre sans erreurs ni problèmes

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 Python - spécifique et est assez commun. Un code de sortie non nul est traité comme une sortie anormale et, parfois, le code d'erreur indique le problème. Un code d'erreur nul 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.

208
manojlds

Ceci détermine le statut de sortie du programme à la fin de son exécution (généralement 0 pour réussir et 1 pour erreur).

Il n’est pas propre à 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 juste des scripts Python, peu importe la situation. ).

17
David Robinson

La convention standard pour tous les programmes C, y compris Python, est que exit(0) indique le succès et exit(1) ou toute autre valeur non nulle (comprise dans la plage 1..255) indiquant un échec. Toute valeur en dehors de la plage 0..255 est traitée modulo 256 (l'état de sortie est stocké dans une valeur de 8 bits). Parfois, cela sera traité comme signé (vous pourrez donc voir -128, -127, etc.) mais plus généralement, il sera traité comme non signé.

Cet état 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 non nul puisse varier d'une plate-forme à l'autre.

9
Jonathan Leffler

Le numéro que vous transmettez à la fonction exit() est simplement le code de retour de votre programme, qui est attribué 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 au système d'exploitation. 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 non nuls pour indiquer une erreur.

Ainsi, si votre programme doit être exécuté à partir d'un script, d'un outil automatisé ou de tout autre logiciel prenant en compte le code de retour (tel qu'un IDE), vous devez faire attention à ce que vous retournez.

En cas de doute, retournez 0 pour indiquer que tout va bien.

exit(0): Ceci entraîne la fermeture du programme.

exit(1): Ceci entraîne la sortie du programme avec une signification spécifique au système.

Sur de nombreux systèmes, exit(1) signale une sorte d'échec, 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 - arrêt réussi
  • EXIT_FAILURE - échec de la terminaison
  • 0 - identique à EXIT_SUCCESS
1