Maison >développement back-end >Tutoriel Python >Que fait l'instruction `if __name__ == '__main__':` de Python ?

Que fait l'instruction `if __name__ == '__main__':` de Python ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-01 14:53:14854parcourir

What does Python's `if __name__ ==

Que fait si __name__ == "__main__": do ?

La garde __name__ est un idiome Python courant qui protège les utilisateurs d'invoquer accidentellement un script alors qu'ils n'en avaient pas l'intention. L'omission de cette garde peut entraîner un comportement inattendu si vous importez le script dans un autre script ou si vous le sérialisez en tant que cornichon.

Comment ça marche

Lorsque l'interprète lit un fichier source, il fait deux choses :

  • Définit des variables spéciales comme __name__
  • Exécute le code trouvé dans le fichier

Si vous exécutez votre module en tant que programme principal, __name__ est défini sur "__main__". Sinon, lorsque vous importez le module, __name__ est défini sur le nom du module.

La garde __name__ fonctionne comme suit :

  • Si __name__ == '__main__' (main programme):

    • Exécuter le code au sein du corps de garde (généralement fonctions).
  • Si __name__ != '__main__' (module importé) :

    • Ignorez le code dans le corps de garde.

Code Échantillon

Examinons le code suivant :

print("before import")
import math

print("before function_a")
def function_a():
    print("Function A")

print("before function_b")
def function_b():
    print("Function B {}".format(math.sqrt(100)))

print("before __name__ guard")
if __name__ == '__main__':
    function_a()
    function_b()
print("after __name__ guard")
  • Importation : les mathématiques sont importées sans la garde, ce qui n'est pas idéal.
  • Programme principal : Si le code est exécuté en tant que programme principal, il s'imprimera "Fonction A" et "Fonction B 10.0" dans la garde __name__.
  • Module importé : Si le code est importé en tant que module normal, la garde sera ignorée et les fonctions seront ne pas être exécuté.

Pourquoi utiliser it?

Cet idiome vous permet d'écrire des fichiers .py qui peuvent être utilisés à la fois comme modules indépendants et comme scripts exécutés en tant que programme principal. Quelques exemples de son utilité :

  • Bibliothèque avec mode démo :Une bibliothèque avec un mode script pour les tests unitaires ou l'exécution de démos.
  • Tests unitaires : Les frameworks de test peuvent importer des fichiers .py en tant que modules, nécessitant le garde __name__ pour empêcher le script exécution.
  • Exposition API : Un module qui fournit une API pour les utilisateurs avancés tout en s'exécutant en tant que programme indépendant.
  • Code polyvalent : C'est élégant pour exécuter un script en important son module, et la garde __name__ facilite cela.

Pour résumer, le if __name__ == La protection '__main__' peut être omise mais est recommandée pour sa polyvalence, sa protection contre les erreurs et pour éviter tout comportement inattendu lors de l'importation ou de la sérialisation du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn