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?

os.abort()Respuestas:
Déjame darte información sobre ellos:
quit()simplemente plantea laSystemExitexcepción.Además, si lo imprime, le dará un mensaje:
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,
quitdebe no ser utilizado en el código de producción. Esto se debe a que solo funciona si elsitemódulo está cargado. En cambio, 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:
Sin embargo, al igual que
quit,exitse 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 delsitemódulo.sys.exit()También plantea laSystemExitexcepción. Esto significa que es lo mismoquityexita ese respecto.Sin embargo, a diferencia de esos dos,
sys.exitse considera bueno usarlo en el código de producción. Esto se debe a que elsysmó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 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. 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.exithace detrás de escena y ejecutar:De esta manera, no necesita importar
sysprimero.Sin embargo, esta elección es simplemente una en estilo y depende exclusivamente de usted.
fuente
quityexitsalga del shell mientrassys.exitno 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.endcomando que lo haríaraise SystemExit. No veo por qué no puede haber algo así de simple, como en BASIC.printse 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()ysys.exit()funcionan de la misma manera: provocan laSystemExitexcepción. Así que no hay diferencia real, excepto quesys.exit()siempre está disponible, peroexit()yquit()sólo están disponibles si elsitemó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 unaos.fork()llamada.Conclusión
Uso
exit()oquit()en la REPL.Úselo
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 llamarse sin argumentos, o puede especificar el estado de salida, por ejemplo,
exit(1)oraise 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, siraise SystemExit(256)en muchos sistemas esto se truncará y su proceso realmente saldrá con el estado 0.Notas al pie
* En realidad,
quit()yexit()son objetos de instancia invocables, pero creo que está bien llamarlos funciones.fuente
Diferentes medios de salida
os._exit():exit(0):exit(1):sys.exit():quit():Resumen
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()oexit().Utilizaría
sys.exit()yos._exit()principalmente si está utilizando archivos grandes o está utilizando python para controlar el terminal.De lo contrario, utilice principalmente
exit()oquit().fuente
sys.exitEs la forma canónica de salir.Internamente
sys.exitsolo aumentaSystemExit. Sin embargo, llamarsys.exites más idiomático que subirSystemExitdirectamente.os.exites una llamada de sistema de bajo nivel que sale directamente sin llamar a ningún controlador de limpieza.quityexitexisten 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 escribirexitoquit. Si bien esto no saldrá del intérprete, al menos emite un mensaje que les indica una salida:Esto es esencialmente un truco que utiliza el hecho de que el intérprete imprime
__repr__cualquier expresión que ingrese en el indicador.fuente