3 modi per terminare un programma in Python

Link veloci

Sapere come terminare un programma è importante e può essere utile in vari scenari. Ad esempio, se stai creando un gioco semplice, puoi uscire su input specifico dell’utente o quando viene soddisfatta una determinata condizione. Scopri le differenze tra i tre modi per fermare un programma Python.

1. Utilizzando quit() o exit()

Uno dei modi più semplici per terminare un programma Python è utilizzare uno dei metodi incorporati, quit() o exit(). Quando chiami quit() o exit(), il programma terminerà.

Le funzioni quit() ed exit() fanno esattamente la stessa cosa, è solo una questione di preferenze personali che usi.

Ecco come puoi utilizzare la funzione quit() per terminare un programma Python:

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

Il programma di esempio sopra stamperà i numeri interi da 0 a 8 sulla console. Una volta che num è 9, il programma esce. Puoi anche utilizzare il comando quit() per uscire da Python Integrated Development and Learning Environment (IDLE), che ti consente di eseguire script Python in modo interattivo.

Tieni presente che sia quit() che exit() si basano sul modulo site quindi non dovresti usarli in ambienti di produzione. Il metodo successivo, sys.exit(), è un’opzione migliore.

2. Utilizzando sys.exit()

Quando chiami sys.exit() nel tuo programma, Python solleva un’eccezione SystemExit. Accetta un argomento facoltativo per specificare un codice di uscita intero (0 per impostazione predefinita). Puoi anche passare un oggetto che risulterà in un codice di uscita pari a 1 e stamperà il valore della stringa dell’oggetto in errore standard.

 import sys 

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

L’output del programma sarà il seguente:

Come i metodi quit ed exit, anche sys.exit() solleva un’eccezione SystemExit. Ciò significa che puoi chiamare sys.exit() o sollevare SystemExit(). Entrambi accettano un argomento facoltativo.

Dovresti conoscere le funzioni Python più importanti se non capisci come funziona il codice sopra.

3. Utilizzo di os._exit()

Il terzo modo per uscire da un programma è il metodo speciale os._exit(). Puoi passargli un argomento facoltativo per specificare un codice di stato di uscita. os._exit() proviene dal modulo os e termina immediatamente il processo senza eseguire le normali attività di pulizia che si verificano quando esce un programma Python.

Poiché questa funzione termina senza eseguire la normale pulizia, è necessario utilizzarla solo in casi speciali. Secondo il Documentazione Pythonun buon esempio è in un processo figlio dopo un fork (un nuovo processo creato utilizzando os.fork()).

Ecco un esempio di come utilizzare la funzione os._exit() per terminare un programma:

 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()

Il codice sopra restituirà quanto segue:

Quale metodo dovresti utilizzare per terminare un programma in Python?

Python fornisce vari metodi per terminare un programma. Tuttavia, la maggior parte di questi metodi fa la stessa cosa. Ciò dovrebbe ridurre il peso del processo decisionale nel caso in cui sia necessario aggiungere un meccanismo di uscita al programma durante l’apprendimento di Python.

In sintesi, sys.exit() dovrebbe essere il metodo preferito per terminare un programma in Python. Genera un’eccezione SystemExit con un codice di uscita opzionale.

I metodi quit() ed exit() sono più appropriati quando si utilizza Python REPL. Dovresti evitarli in produzione perché dipendono dal modulo del sito, che potrebbe non essere sempre disponibile. Raramente dovresti aver bisogno di usare os._exit(), a meno che tu non stia lavorando con codice che esegue il fork dei processi.