Environnement de script de haut niveau principal

Qu’est-ce que c’est

__main__ est le nom de la portée dans laquelle le code de haut niveau s’exécute. Le nom d’un module est défini égal à __main__ lorsqu’il est lu depuis l’entrée standard, un script ou une invite interactive.

Un module peut découvrir s’il s’exécute dans la portée principale en vérifiant son propre __name__, ce qui permet une idiome courante pour exécuter conditionnellement du code dans un module. Lorsqu’il est exécuté comme un script ou avec python -m mais pas lorsqu’il est importé :

# __name__ == "__main__": vérifier si le script est exécuté directement (non importé)
if __name__ == "__main__":  # Vrai lors de l'exécution comme script, Faux lors de l'importation
    # exécuter uniquement si exécuté comme script
    main()

Pour un paquet, le même effet peut être obtenu en incluant un module main.py, dont le contenu sera exécuté lorsque le module est exécuté avec -m.

Par exemple, si nous développons un script conçu pour être utilisé comme module, nous devrions faire :

# Exemple : la fonction peut être importée, mais le code de test ne s'exécute que lorsqu'il est exécuté directement
def add(a, b):
    return a+b

if __name__ == "__main__":  # Ne s'exécute que lorsque le fichier est exécuté, pas lorsqu'il est importé
    add(3, 5)
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Quelle est la valeur de __name__ lorsqu'un fichier Python est exécuté directement comme un script ?
A. Le nom du fichier
B. "**main**"
C. None
D. True

Avantages

  1. Chaque module Python a son __name__ défini et si celui-ci est __main__, cela implique que le module est exécuté de manière autonome par l’utilisateur, et nous pouvons effectuer les actions appropriées correspondantes.
  2. Si vous importez ce script comme module dans un autre script, le nom est défini sur le nom du script/module.
  3. Les fichiers Python peuvent agir soit comme des modules réutilisables, soit comme des programmes autonomes.
  4. if __name__ == "__main__": est utilisé pour exécuter du code uniquement si le fichier est exécuté directement et n’est pas importé.
Quiz

Connectez-vous pour répondre à ce quiz et suivre votre progression d'apprentissage

Quel est l'objectif principal de l'utilisation de if __name__ == "__main__": ?
A. Exécuter du code uniquement lorsque le fichier est exécuté directement, et non lorsqu'il est importé
B. Empêcher l'importation du fichier
C. Rendre l'exécution du fichier plus rapide
D. Cacher du code aux autres modules

Liens pertinents