3 formas de finalizar un programa en Python

enlaces rápidos

Saber cómo finalizar un programa es importante y puede resultar útil en varios escenarios. Por ejemplo, si estás creando un juego simple, puedes salir cuando un usuario ingresa algo específico o cuando se cumple una determinada condición. Descubra las diferencias entre las tres formas de detener un programa Python.

1. Usando quit() o exit()

Una de las formas más sencillas de finalizar un programa Python es utilizar cualquiera de los métodos integrados, quit() o exit(). Cuando llame a quit() o exit(), el programa finalizará.

Las funciones quit() y exit() hacen exactamente lo mismo, es sólo una cuestión de preferencia personal cuál utilices.

A continuación se explica cómo puede utilizar la función quit() para finalizar un programa Python:

 for num in range(10):
    if num == 9:
        quit()
    print(num)

El programa de muestra anterior imprimirá números enteros del 0 al 8 en la consola. Una vez que el número sea 9, el programa sale. También puede utilizar el comando quit() para salir del entorno de aprendizaje y desarrollo integrado de Python (IDLE), que le permite ejecutar scripts de Python de forma interactiva.

Tenga en cuenta que tanto quit() como exit() dependen del módulo del sitio, por lo que no debería usarlos en entornos de producción. El siguiente método, sys.exit(), es una mejor opción.

2. Usando sys.exit()

Cuando llamas a sys.exit() en tu programa, Python genera una excepción SystemExit. Acepta un argumento opcional para especificar un código de salida entero (0 por defecto). También puede pasar un objeto que dará como resultado un código de salida de 1 e imprimirá el valor de la cadena del objeto como error estándar.

 import sys 

for num in range(10):
    if num == 5:
        sys.exit("You exited the program")
    print(num)

El resultado del programa será el siguiente:

Al igual que los métodos quit y exit, sys.exit() también genera una excepción SystemExit. Esto significa que puede llamar a sys.exit() o generar SystemExit(). Ambos aceptan un argumento opcional.

Deberías aprender sobre las funciones más importantes de Python si no entiendes cómo funciona el código anterior.

3. Usando os._exit()

La tercera forma de salir de un programa es el método especial os._exit(). Puede pasarle un argumento opcional para especificar un código de estado de salida. os._exit() proviene del módulo os y finaliza el proceso inmediatamente sin realizar las actividades de limpieza normales que ocurren cuando se cierra un programa Python.

Debido a que esta función sale sin realizar una limpieza normal, solo debes usarla en casos especiales. De acuerdo con la documentación de Pythonun buen ejemplo es un proceso hijo después de una bifurcación (un nuevo proceso creado usando os.fork()).

Aquí hay un ejemplo de cómo usar la función os._exit() para finalizar un programa:

 import os
import sys

def child_process():
    print("Child process is running.")
    os._exit(0)

def main():
    print("Parent process is running.")

    try:
        pid = os.fork()

        if pid == 0:
            
            child_process()
        else:
            
            print(f"Parent process is continuing with child process PID: {pid}")
    except OSError as e:
        print(f"Fork failed: {e}")
        sys.exit(1)

    print("Parent process is done.")

if __name__ == "__main__":
    main()

El código anterior generará lo siguiente:

¿Qué método debería utilizar para finalizar un programa en Python?

Python proporciona varios métodos para finalizar un programa. Sin embargo, la mayoría de estos métodos hacen lo mismo. Esto debería reducir la carga de la toma de decisiones si necesita agregar un mecanismo de salida a su programa cuando aprende Python.

En resumen, sys.exit() debería ser su método de referencia para finalizar un programa en Python. Genera una excepción SystemExit con un código de salida opcional.

Los métodos quit() y exit() son más apropiados cuando se utiliza Python REPL. Debes evitarlos en producción porque dependen del módulo del sitio, que puede no estar siempre disponible. Rara vez deberías necesitar usar os._exit(), a menos que estés trabajando con código que bifurca procesos.