Respostas:
Deixe-me dar algumas informações sobre eles:
quit()
simplesmente gera a SystemExit
exceção.
Além disso, se você imprimi-lo, será exibida uma mensagem:
>>> print (quit)
Use quit() or Ctrl-Z plus Return to exit
>>>
Essa funcionalidade foi incluída para ajudar pessoas que não conhecem o Python. Afinal, uma das coisas mais prováveis que um novato tentará sair do Python está digitando quit
.
No entanto, nãoquit
deve ser usado no código de produção. Isso ocorre porque ele só funciona se o módulo estiver carregado. Em vez disso, essa função deve ser usada apenas no intérprete.site
exit()
é um alias para quit
(ou vice-versa). Eles existem juntos simplesmente para tornar o Python mais fácil de usar.
Além disso, também fornece uma mensagem quando impressa:
>>> print (exit)
Use exit() or Ctrl-Z plus Return to exit
>>>
No entanto, como quit
, exit
é considerado ruim para usar no código de produção e deve ser reservado para uso no intérprete. Isso ocorre porque ele também depende do site
módulo.
sys.exit()
também gera a SystemExit
exceção. Isso significa que é o mesmo quit
e a exit
esse respeito.
Ao contrário dos dois, no entanto, sys.exit
é considerado bom usar no código de produção. Isso ocorre porque o sys
módulo sempre estará lá.
os._exit()
sai do programa sem chamar manipuladores de limpeza, rubor buffers stdio, etc . Portanto, não é uma maneira padrão de sair e deve ser usada apenas em casos especiais. O mais comum deles está no (s) processo (s) filho (s) criado por os.fork
.
Observe que, dos quatro métodos dados, apenas este é único no que faz.
Resumindo, todos os quatro métodos saem do programa. No entanto, os dois primeiros são considerados ruins para uso no código de produção e o último é uma maneira suja e não-padrão que é usada apenas em cenários especiais. Então, se você quiser sair de um programa normalmente, ir com o terceiro método: sys.exit
.
Ou, melhor ainda, na minha opinião, você pode simplesmente fazer diretamente o que sys.exit
faz nos bastidores e executar:
raise SystemExit
Dessa forma, você não precisa importar sys
primeiro.
No entanto, essa escolha é simplesmente uma opção de estilo e depende exclusivamente de você.
quit
e exit
saia do shell enquanto sys.exit
não estiver .
sys.exit()
não é uma maneira confiável de fechar. Se for chamado dentro de um segmento, ele encerrará apenas esse segmento, a menos que esteja no segmento principal. Isso pode levar a muitos casos em que o programa continua porque a chamada não estava no encadeamento principal, principalmente porque alguns intérpretes encadearão invisivelmente as chamadas.
end
comando que seria raise SystemExit
. Não perceba por que não pode haver algo simples assim, como no BASIC.
print
foi alterado de uma instrução para uma função. É fácil adicionar sintaxe, mas há um custo de complexidade para fazer isso.
sys.exit()
?
As funções * quit()
, exit()
e sys.exit()
funcionam da mesma maneira: eles levantam a SystemExit
exceção. Portanto, não há diferença real, exceto que sys.exit()
está sempre disponível, mas exit()
e quit()
só estão disponíveis se o site
módulo é importado.
A os._exit()
função é especial, sai imediatamente sem chamar nenhuma função de limpeza (não libera buffers, por exemplo). Isso foi desenvolvido para casos de uso altamente especializados ... basicamente, apenas na criança após uma os.fork()
chamada.
Use exit()
ou quit()
no REPL.
Use sys.exit()
em scripts ou raise SystemExit()
se preferir.
Use os._exit()
para processos filhos para sair após uma chamada para os.fork()
.
Tudo isso pode ser chamado sem argumentos, ou você pode especificar o status de saída, por exemplo, exit(1)
ou raise SystemExit(1)
para sair com o status 1. Observe que os programas portáteis são limitados a códigos de status de saída no intervalo de 0 a 255, se você raise SystemExit(256)
em muitos sistemas ficar truncado e seu processo realmente sairá com o status 0.
* Na verdade, quit()
e exit()
são objetos de instância que podem ser chamados, mas acho que é bom chamá-los de funções.
os._exit()
:
exit(0)
:
exit(1)
:
sys.exit()
:
quit()
:
Basicamente, todos eles fazem a mesma coisa, no entanto, também depende do que você está fazendo.
Eu não acho que você deixou nada de fora e eu recomendaria se acostumar com quit()
ou exit()
.
Você usaria sys.exit()
e os._exit()
principalmente se estiver usando arquivos grandes ou usando python para controlar o terminal.
Caso contrário, use principalmente exit()
ou quit()
.
sys.exit
é a maneira canônica de sair.
Internamente sys.exit
apenas aumenta SystemExit
. No entanto, chamar sys.exit
é mais idiomático do que aumentar SystemExit
diretamente.
os.exit
é uma chamada de sistema de baixo nível que sai diretamente sem chamar nenhum manipulador de limpeza.
quit
e exit
existe apenas para fornecer uma maneira fácil de sair do prompt do Python. Isso é para novos usuários ou usuários que entraram acidentalmente no prompt do Python e não querem saber a sintaxe correta. É provável que eles tentem digitar exit
ou quit
. Embora isso não saia do intérprete, ele pelo menos emite uma mensagem que indica uma saída:
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$
Isso é essencialmente apenas um truque que utiliza o fato de que o intérprete imprime o __repr__
de qualquer expressão que você digitar no prompt.
os.abort()