Python __name__ et __main__

Généralement, on voit souvent du code Python comme ceci :

if __name__ == "__main__":
    main() 

En Python,__name__et__main__sont deux variables spéciales liées à l'exécution des modules et des scripts.

__name__et__main___name__ est généralement utilisé pour contrôler la façon dont le code est exécuté, en particulier lorsqu'un module peut être exécuté à la fois comme script autonome et importé par d'autres modules.

1. La variable __name__

__name__ est une variable intégrée utilisée pour représenter le nom du module courant.

__name__ La valeur de __name__ dépend de la façon dont le module est utilisé :

Lorsque le module est exécuté comme programme principal :__name__la valeur de __name__ est définie sur"__main__"。

Lorsque le module est importé :__name__la valeur de __name__ est définie sur le nom de fichier du module (à l'exclusion de l'extension.py.py).

Supposons qu'il existe un fichier module.py :

print(f"模块的 __name__ 值: {__name__}")
La sortie sera :
模块的 __name__ 值: __main__

2. La signification de __main__

__main__est une chaîne spéciale utilisée pour indiquer que le module actuel est exécuté comme programme principal.

__main__Il est généralement utilisé avec la variable __name__ pour déterminer si un module est importé ou exécuté comme script autonome.

3. Modèles courants d'utilisation deif __name__ == "__main__":__name__ == "__main__"

En Python, une pratique courante consiste à ajouter le bloc de code suivant à la fin d'un module :

Exemples

if __name__ == "__main__":
    # Le code ici ne s'exécutera que lorsque le module est exécuté comme programme principal
    main()

Ce modèle permet au module de ne pas exécuter un certain code lorsqu'il est importé, et de n'exécuter ce code que lorsqu'il est exécuté comme script autonome.


Exemple

Supposons que nous ayons un module nommé example.py :

module du fichier example.py :

def greet():
    print("Salutations du module example !")

if __name__ == "__main__":
    print("Le script est exécuté directement.")
    greet()
else:
    print("Le script est importé en tant que module.")

Exécuter example.py directement

Si vous exécutez example.py directement, la sortie sera :

该脚本正在直接运行。
来自 example 模块的问候!

Dans ce cas,__name__la valeur de __name__ est "__main__", donc leif __name__ == "__main__"__name__ == "__main__": le bloc de code sera exécuté.

Importer example.py

Si vous importez example.py dans un autre script, par exemple :

Exemple

# another_script.py

import example

example.greet()

La sortie sera :

该脚本作为模块被导入。
来自 example 模块的问候!

Dans ce cas,__name__la valeur de __name__ est"example" (le nom du module), donc leif __name__ == "__main__":__name__ == "__main__" le bloc de code ne sera pas exécuté.

Résumé

  • __name____name__ est une variable intégrée qui représente le nom du module actuel.

  • Lorsque le module est exécuté comme programme principal,__name__la valeur de __name__ est "__main__"."__main__"。

  • Lorsque le module est importé,__name__la valeur de __name__ est le nom de fichier du module.

  • Utilisationif __name__ == "__main__":__name__ == "__main__" permet de contrôler le module afin qu'un certain code ne soit pas exécuté lorsqu'il est importé, mais qu'il soit exécuté uniquement lorsqu'il est lancé comme script autonome.

Autres extensions