Maison > développement back-end > Tutoriel Python > Que fait `if __name__ == '__main__':` en Python et pourquoi est-ce important ?

Que fait `if __name__ == '__main__':` en Python et pourquoi est-ce important ?

Patricia Arquette
Libérer: 2024-12-24 03:52:14
original
731 Les gens l'ont consulté

What Does `if __name__ ==

Que fait name == "__main__": faire et pourquoi est-ce nécessaire ?

Quand un script Python est exécuté en tant que programme principal , l'interpréteur attribue la variable spéciale __name__ à "__main__". Si le script est importé en tant que module par un autre programme, __name__ est défini sur le nom du module d'importation.

Pour comprendre pourquoi cela est important, considérons l'exemple suivant :

# Suppose this is foo.py.

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")
Copier après la connexion

Flux d'exécution :

  1. Variables spéciales Configuration :

    • name est défini sur "__main__" puisque foo.py est exécuté en tant que programme principal.
  2. Exécution de code :

    • Le Le script exécute tout son code ligne par ligne :

      • Imprime "avant importation", charge le module mathématique, etc.
      • Définit les fonctions function_a et function_b.
    • La vérification name est évaluée : puisqu'elle correspond à "main", tout le code dans le bloc if est exécuté (impression "Fonction A" et "Fonction B 10.0").
    • Le code sous le contrôle nom est exécuté (impression "après nom__ garde").

Importance du nom Vérifiez :

Cette vérification est cruciale car :

  • Protection contre les invocations accidentelles : Si foo.py n'a pas le nom vérifiez, l'importer en tant que module déclencherait l'exécution du script en utilisant les arguments de ligne de commande du script d'importation, ce qui est généralement indésirable.
  • Problème de fichier Pickle : Si foo.py a des classes personnalisées enregistrées dans un fichier pickle, le dépickler dans un autre script importerait foo.py et exécuterait son code sans le nom vérification, conduisant aux problèmes ci-dessus.

Supplémentaires Notes :

  • Vous pouvez avoir plusieurs vérifications nom dans un script, mais c'est rare.
  • Exécuter le script foo2.py avec le name incluaient les résultats dans "a1", "m1", "a2", "b", "a3", "m2", "t2", lors de la suppression de la vérification nom, les résultats sont "a1", "a2", "b", "a3", "t2".
  • Exécuter foo3.py en tant que script donne "t1", "a1", "a2", "b", "a3", "t2", tandis que son importation en tant que module n'entraîne aucune exécution.
  • Définition de __name__ à "__main__" dans foo4.py (même lorsqu'il est importé en tant que module) signifie que le script sera toujours exécuté une fois importé, car __name__ == __main__ sera toujours évalué à True.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal