salto - Comandos de salida de Python: ¿por qué tantos y cuándo se deben usar?
print salto de linea python (4)
Diferentes medios de salida
os._exit()
:
- Salga del proceso sin llamar a los manejadores de limpieza.
exit(0)
:
- Una salida limpia sin ningún error / problema.
exit(1)
:
- Hubo algún problema / error / problema y es por eso que el programa está saliendo.
sys.exit()
:
- Cuando el sistema y la pitón se apagan; significa que se está utilizando menos memoria después de ejecutar el programa.
quit()
:
- Cierra el archivo python.
Resumen
Básicamente, todos hacen lo mismo, sin embargo, también depende de para qué lo haces.
No creo que hayas omitido nada y recomendaría que te acostumbras a quit()
o exit()
.
sys.exit()
y os._exit()
principalmente si está usando archivos grandes o está usando python para controlar el terminal.
De lo contrario, utilice principalmente exit()
o quit()
.
Parece que Python admite muchos comandos diferentes para detener la ejecución del script.
Las opciones que he encontrado son: quit()
, exit()
, sys.exit()
, os._exit()
¿Me he perdido alguno? ¿Cual es la diferencia entre ellos? ¿Cuándo usarías cada uno?
Las funciones * quit()
, exit()
y sys.exit()
funcionan de la misma manera: SystemExit
excepción SystemExit
. Por lo tanto, no hay una diferencia real, excepto que sys.exit()
siempre está disponible, pero exit()
y quit()
solo están disponibles si se importa el módulo del site
.
La función os._exit()
es especial, se cierra inmediatamente sin llamar a ninguna función de limpieza (por ejemplo, no vacía búferes). Esto está diseñado para casos de uso altamente especializados ... básicamente, solo en el niño después de una llamada os.fork()
.
Conclusión
Use
exit()
oquit()
en el REPL.Use
sys.exit()
en scripts, oraise SystemExit()
si lo prefiere.Use
os._exit()
para que los procesos secundarios salgan después de una llamada aos.fork()
.
Todos estos pueden ser llamados sin argumentos, o puede especificar el estado de salida, por ejemplo, exit(1)
o raise SystemExit(1)
para salir con el estado 1. Tenga en cuenta que los programas portátiles están limitados para salir de los códigos de estado en el rango 0- 255, si raise SystemExit(256)
en muchos sistemas, esto se truncará y su proceso realmente saldrá con el estado 0.
Notas al pie
* En realidad, quit()
y exit()
son objetos de instancia invocables, pero creo que está bien llamarlos funciones.
Permítanme darles alguna información sobre ellos:
quit
levanta la excepciónSystemExit
detrás de escena.Además, si lo imprimes, aparecerá 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 en que un novato intentará salir de Python es escribir
quit
.Sin embargo,
quit
no debe utilizarse en el código de producción. Esto se debe a que solo funciona si el módulo delsite
está cargado. En su lugar, esta función solo debe usarse en el intérprete.exit
es un alias paraquit
(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, como
quit
, laexit
se considera mala para usar en el código de producción y se debe reservar para usar en el intérprete. Esto se debe a que también se basa en el módulo delsite
.sys.exit
genera la excepciónSystemExit
en segundo plano. Esto significa que es lo mismo quequit
yexit
a ese respecto.Sin embargo, a diferencia de esos dos,
sys.exit
se considera bueno para usar en el código de producción. Esto se debe a que el módulosys
siempre estará allí.os._exit
sale del programa sin llamar a los manejadores de limpieza, al vaciar los buffers de stdio, etc. Por lo tanto, no es una forma estándar de salir y solo se debe utilizar en casos especiales. El más común de estos está en los procesos secundarios creados poros.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. Entonces, si quiere salir de un programa normalmente, vaya con el tercer método: sys.exit
.
O, incluso mejor, en mi opinión, puedes hacer directamente lo que sys.exit
hace entre bastidores y ejecutar:
raise SystemExit
De esta manera, no es necesario importar primero el sistema.
Sin embargo, esta elección es sencillamente una cuestión de estilo y depende exclusivamente de usted.
sys.exit
es la forma canónica de salir.
Internamente sys.exit
solo genera SystemExit
. Sin embargo, llamar a sys.exit
es más idiomático que elevar SystemExit
directamente.
os.exit
es una llamada del 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 en 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()
$
Básicamente, se trata de un truco que utiliza el hecho de que el intérprete imprime el __repr__
de cualquier expresión que ingrese en el indicador.