Respuestas:
Déjame darte información sobre ellos:
quit()
simplemente plantea la SystemExit
excepción.
Además, si lo imprime, le dará un mensaje:
>>> print (quit)
Use quit() or Ctrl-Z plus Return to exit
>>>
Esta funcionalidad se incluyó para ayudar a las personas que no conocen Python. Después de todo, una de las cosas más probables que un novato intentará salir de Python es escribir quit
.
Sin embargo, quit
debe no ser utilizado en el código de producción. Esto se debe a que solo funciona si el site
módulo está cargado. En cambio, esta función solo debe usarse en el intérprete.
exit()
es un alias para quit
(o viceversa). Existen juntos simplemente para hacer que Python sea más fácil de usar.
Además, también da un mensaje cuando se imprime:
>>> print (exit)
Use exit() or Ctrl-Z plus Return to exit
>>>
Sin embargo, al igual que quit
, exit
se considera malo usarlo en el código de producción y debe reservarse para el intérprete. Esto se debe a que también depende del site
módulo.
sys.exit()
También plantea la SystemExit
excepción. Esto significa que es lo mismo quit
y exit
a ese respecto.
Sin embargo, a diferencia de esos dos, sys.exit
se considera bueno usarlo en el código de producción. Esto se debe a que el sys
módulo siempre estará allí.
os._exit()
sale del programa sin llamar a los manipuladores de limpieza, vaciando los buffers stdio, etc . Por lo tanto, no es una forma estándar de salir y solo debe usarse en casos especiales. El más común de estos está en los procesos secundarios creados por os.fork
.
Tenga en cuenta que, de los cuatro métodos dados, solo este es único en lo que hace.
En resumen, los cuatro métodos salen del programa. Sin embargo, los dos primeros se consideran malos para usar en el código de producción y el último es una forma sucia no estándar que solo se usa en escenarios especiales. Por lo tanto, si desea salir de un programa normalmente, ir con el tercer método: sys.exit
.
O, incluso mejor en mi opinión, puede hacer directamente lo que sys.exit
hace detrás de escena y ejecutar:
raise SystemExit
De esta manera, no necesita importar sys
primero.
Sin embargo, esta elección es simplemente una en estilo y depende exclusivamente de usted.
quit
y exit
salga del shell mientras sys.exit
no lo hace.
sys.exit()
No es una forma confiable de cerrar. Si se llama dentro de un hilo, terminará solo ese hilo a menos que esté en el hilo principal. Esto puede conducir a muchos casos en los que el programa continúa porque la llamada no estaba en el hilo principal, especialmente porque algunos intérpretes enhebrarán invisiblemente las llamadas.
end
comando que lo haría raise SystemExit
. No veo por qué no puede haber algo así de simple, como en BASIC.
print
se cambió de una declaración a una función. Es fácil agregar sintaxis, pero su costo es complejo.
sys.exit()
?
Las funciones * quit()
, exit()
y sys.exit()
funcionan de la misma manera: provocan la SystemExit
excepción. Así que no hay diferencia real, excepto que sys.exit()
siempre está disponible, pero exit()
y quit()
sólo están disponibles si el site
módulo ha sido importada.
La os._exit()
función es especial, sale inmediatamente sin llamar a ninguna función de limpieza (por ejemplo, no vacía los búferes). Está diseñado para casos de uso altamente especializados ... básicamente, solo en el niño después de una os.fork()
llamada.
Uso exit()
o quit()
en la REPL.
Úselo sys.exit()
en scripts, o raise SystemExit()
si lo prefiere.
Use os._exit()
para que los procesos secundarios salgan después de una llamada a os.fork()
.
Todos estos pueden llamarse sin argumentos, o puede especificar el estado de salida, por ejemplo, exit(1)
o raise SystemExit(1)
salir con el estado 1. Tenga en cuenta que los programas portátiles están limitados a los códigos de estado de salida en el rango 0-255, si raise SystemExit(256)
en muchos sistemas esto se truncará y su proceso realmente saldrá con el estado 0.
* En realidad, quit()
y exit()
son objetos de instancia invocables, pero creo que está bien llamarlos funciones.
os._exit()
:
exit(0)
:
exit(1)
:
sys.exit()
:
quit()
:
Básicamente, todos hacen lo mismo, sin embargo, también depende de para qué lo estés haciendo.
No creo que hayas dejado nada fuera y recomendaría acostumbrarte quit()
o exit()
.
Utilizaría sys.exit()
y os._exit()
principalmente si está utilizando archivos grandes o está utilizando python para controlar el terminal.
De lo contrario, utilice principalmente exit()
o quit()
.
sys.exit
Es la forma canónica de salir.
Internamente sys.exit
solo aumenta SystemExit
. Sin embargo, llamar sys.exit
es más idiomático que subir SystemExit
directamente.
os.exit
es una llamada de sistema de bajo nivel que sale directamente sin llamar a ningún controlador de limpieza.
quit
y exit
existen solo para proporcionar una salida fácil del indicador de Python. Esto es para usuarios nuevos o usuarios que ingresaron accidentalmente el indicador de Python y no desean conocer la sintaxis correcta. Es probable que intenten escribir exit
o quit
. Si bien esto no saldrá del intérprete, al menos emite un mensaje que les indica una salida:
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$
Esto es esencialmente un truco que utiliza el hecho de que el intérprete imprime __repr__
cualquier expresión que ingrese en el indicador.
os.abort()