3 façons de terminer un programme en Python



Accès Rapide

Il est crucial de maîtriser l’arrêt d’un programme, une compétence utile dans de nombreux contextes. Par exemple, dans la conception d’un jeu simple, l’arrêt peut être déclenché par une entrée spécifique de l’utilisateur ou la réalisation d’une condition particulière. Examinons les nuances entre les trois méthodes principales pour stopper un programme Python.

1. Emploi de quit() ou exit()

Une façon simple d’interrompre un programme Python est d’utiliser l’une des fonctions intégrées, quit() ou exit(). L’appel de l’une ou l’autre de ces fonctions provoque l’arrêt immédiat du programme.

Ces deux fonctions sont interchangeables et ne diffèrent que par la préférence de l’utilisateur.

Voici un exemple d’utilisation de quit() pour terminer un programme Python:

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

Ce programme affichera les entiers de 0 à 8. Dès que num atteint 9, le programme cesse son exécution. quit() peut aussi être utilisé pour quitter l’environnement Python IDLE, permettant une interaction directe avec les scripts Python.

Il est important de noter que quit() et exit() dépendent du module site, ce qui les rend inadaptées aux environnements de production. sys.exit(), présentée ci-après, est une alternative plus robuste.

2. Emploi de sys.exit()

L’appel de sys.exit() engendre une exception SystemExit. Cette fonction accepte un argument optionnel, un code de sortie entier (0 par défaut). Il est également possible de passer un objet, ce qui résultera en un code de sortie de 1, avec l’affichage de la représentation textuelle de l’objet sur l’erreur standard.

    
        import sys
for num in range(10):
    if num == 5:
        sys.exit("Le programme s'est arrêté")
    print(num)

Ce fragment de code aura la sortie suivante :

À l’instar de quit et exit, sys.exit() déclenche une exception SystemExit. Par conséquent, il est possible d’appeler sys.exit() ou de lever SystemExit(). Les deux acceptent un argument optionnel.

Pour mieux saisir le fonctionnement du code ci-dessus, il est conseillé d’approfondir vos connaissances sur les fonctions Python fondamentales.

3. Emploi de os._exit()

os._exit() est une méthode spécifique pour arrêter un programme. Elle prend en paramètre un code de sortie optionnel et provient du module os. Contrairement aux autres méthodes, elle interrompt immédiatement le processus sans exécuter les opérations de nettoyage habituelles d’un programme Python.

En raison de cette particularité, son utilisation doit être réservée à des cas spécifiques. La documentation Python suggère son utilisation dans le contexte d’un processus enfant après un fork (création d’un nouveau processus via os.fork()).

Voici un exemple de code démontrant l’utilisation de os._exit():

  
import os
import sys
def child_process():
    print("Le processus enfant est en cours d'exécution.")
    os._exit(0)

def main():
    print("Le processus parent est en cours d'exécution.")

    try:
        pid = os.fork()

        if pid == 0:
            
            child_process()
        else:
            
            print(f"Le processus parent continue avec le PID du processus enfant: {pid}")
    except OSError as e:
        print(f"Échec du fork: {e}")
        sys.exit(1)

    print("Le processus parent est terminé.")

if __name__ == "__main__":
    main()

L’exécution de ce code produira le résultat suivant:

Quelle approche privilégier pour interrompre un programme Python ?

Python met à disposition plusieurs façons d’arrêter un programme. Cependant, ces méthodes convergent en grande partie vers le même résultat. La simplicité des choix réduit la complexité de l’implémentation d’un mécanisme d’arrêt dans vos programmes.

En résumé, sys.exit() est la méthode à privilégier pour la terminaison d’un programme Python. Elle lève une exception SystemExit et permet de spécifier un code de sortie.

Les méthodes quit() et exit() sont plus adaptées à l’environnement interactif Python (REPL) et à l’apprentissage. Il est préférable de les éviter en production en raison de leur dépendance au module site, qui n’est pas toujours disponible. L’utilisation de os._exit() doit être réservée à des situations spécifiques, notamment lors de la gestion de processus enfant.