python exit quit

python exit function



¿Hay algún método que le diga a mi programa que deje de fumar? (5)

Para la opción "q" (salir) en el menú de mi programa, tengo el siguiente código:

elif choice == "q": print()

Eso funcionó bien hasta que lo puse en un bucle infinito, que seguía imprimiendo líneas en blanco. ¿Hay algún método que pueda salir del programa? De lo contrario, ¿puedes pensar en otra solución?


En Python 3 hay una función exit() :

elif choice == "q": exit()


La forma real de terminar un programa, es llamar

raise SystemExit

Es lo que hace sys.exit , de todos modos .

Un SystemExit simple, o con None como un único argumento, establece el código de salida del proceso en cero. Cualquier valor de excepción no entero ( raise SystemExit("some message") ) imprime el valor de excepción en sys.stderr y establece el código de salida en 1. Un valor entero establece el código de salida del proceso en el valor:

$ python -c "raise SystemExit(4)"; echo $? 4


Tenga en cuenta que las soluciones basadas en sys.exit () o cualquier excepción pueden no funcionar en un entorno de subprocesos múltiples.

Como exit () finalmente "solo" genera una excepción, solo saldrá del proceso cuando se le llame desde el hilo principal, y la excepción no se intercepta. ( doc )

Esta respuesta de Alex Martelli para más detalles.


Una forma es hacer:

sys.exit(0)

Tendrá que import sys por supuesto.

Otra forma es salir de tu bucle infinito. Por ejemplo, podrías hacer esto:

while True: choice = get_input() if choice == "a": # do something elif choice == "q": break

Otra forma más es poner su bucle principal en una función y usar return :

def run(): while True: choice = get_input() if choice == "a": # do something elif choice == "q": return if __name__ == "__main__": run()

La única razón por la que necesita la función run() cuando usa return es que (a diferencia de otros idiomas) no puede return directamente de la parte principal de su código Python (la parte que no está dentro de una función).


Ver sys.exit . Esa función saldrá de su programa con el estado de salida dado.