Diferença entre exit (0) e exit (1) em Python

167

Qual é a diferença entre exit(0)e exit(1)no Python?

Tentei olhar em volta, mas não encontrei uma pergunta específica nessas linhas. Se já foi respondido, um link seria suficiente.

buscador
fonte
9
Aqui está um link para exit()os documentos , que levei uma eternidade para encontrar.
Ryne Everett
Só percebi que há exit(0)que é discutido nesta questão e também um com um sublinhado _exit(0), a diferença é explicada aqui
cardamomo
O bom desses códigos é que eles podem ser usados ​​diretamente em uma ifdeclaração em um bashwrapper, para que outras ações possam ser executadas se o programa Python for bem-sucedido ou se tiver um status diferente de zero.
SDsolar 5/05
estranho, se 0 é falso e 1 é verdade em Python, você acha que os números significaria o oposto
Monica Heddneck

Respostas:

248

0 e 1 são os códigos de saída.

exit(0) significa uma saída limpa, sem erros / problemas

exit(1) significa que houve algum problema / erro / problema e é por isso que o programa está saindo.

Isso não é específico do Python e é bastante comum. Um código de saída diferente de zero é tratado como uma saída anormal e, às vezes, o código de erro indica qual foi o problema. Um código de erro zero significa uma saída bem-sucedida.

Isso é útil para outros programas, shell, chamador etc. saberem o que aconteceu com o seu programa e proceder de acordo.

manojlds
fonte
10
E a saída (-1)?
Faizan
16
@ Faizan: O código de saída é um valor de 8 bits no Unix. Se você chamar exit(-1), o valor será equivalente a exit(255)- os 8 bits menos significativos são retransmitidos para o programa de chamada (shell ou o que for).
Jonathan Leffler 06/02
4
Observe que, de acordo com os documentos , exit()é adicionado pelo sitemódulo e não deve ser usado pelos programas. Em vez disso, use sys.exit(), ou mesmo raise SystemExit, se você não deseja importar outro módulo.
daviewales 22/08/19
2
Por causa dos códigos de saída do Unix / Linux, eu estava pensando que 0 é True e 1 é valor False nas condições Python.
vlyalcin
19

Isso determina o status da saída de do programa quando ele termina a execução (geralmente 0 para êxito e 1 para erro).

Não é exclusivo do Python, e o efeito exato depende do seu sistema operacional e da forma como o programa é chamado (embora 99% das vezes, se você estiver apenas executando scripts do Python, isso não importa).

David Robinson
fonte
12

A convenção padrão para todos os programas C, incluindo Python, é para exit(0)indicar sucesso eexit(1) ou qualquer outro valor diferente de zero (no intervalo de 1 a 255) para indicar falha. Qualquer valor fora do intervalo 0..255 é tratado no módulo 256 (o status de saída é armazenado em um valor de 8 bits). Às vezes, isso será tratado como assinado (para que você possa ver -128, -127, etc), mas mais geralmente é tratado como não assinado.

Esse status está disponível para o código que chamou o Python. Esta convenção se aplica a plataformas, embora o significado do status de saída diferente de zero possa variar em plataformas diferentes.

Jonathan Leffler
fonte
7

O número que você passa para o exit() função é simplesmente o código de retorno do seu programa, que é fornecido ao sistema operacional. Do ponto de vista do seu programa, não há diferença: a execução terminará nos dois casos e o valor fornecido à função será fornecido ao sistema operacional. Mas algumas ferramentas e scripts levam em consideração o código de saída do programa. A maioria das ferramentas retorna 0 quando é bem-sucedida e diferente de zero para indicar um erro.

Portanto, se o seu programa for executado a partir de um script, de uma ferramenta automatizada ou de outro software que leve em consideração o código de retorno (como um IDE), você deve ter cuidado com o que retornar.

Em caso de dúvida, basta retornar 0 para indicar que tudo está OK.

José Ernesto Lara Rodríguez
fonte
6

exit(0): Isso faz com que o programa saia com uma finalização bem-sucedida.

exit(1): Isso faz com que o programa saia com um significado específico do sistema.

Em muitos sistemas, exit(1)sinaliza algum tipo de falha, porém não há garantia.

Pelo que me lembro, o padrão C reconhece apenas três valores de saída padrão:

  • EXIT_SUCCESS - rescisão bem sucedida
  • EXIT_FAILURE - rescisão sem êxito
  • 0 -- igual a EXIT_SUCCESS
sailakshmi cheedella
fonte