InPythonDans les codes pertinents,Nous rencontrons souvent le fragment de code suivant:
# stuff
if __name__ == "__main__":
# do stuff
Dans la mesure du possible, cet article utilisera des exemples simples pour expliquer ce qui se passe ici,Et la nécessité d'utiliserif __name__=="__main__"
La situation.Votre attention, s'il vous plaît.,Dans les codes ci - dessusname
Etmain
Avant et après2Caractères soulignés.
Moins de commérages,Commençons tout de suite!
Quand on a fait notrePython
Lors du script,Variables dans ce script__name__
La valeur de est généralement__main__
.Prenons un exemple.:
# first.py
print(__name__)
Nous exécuterons le script ci - dessus dans le terminal,Les codes sont les suivants::
python first.py
Les résultats sont les suivants:
__main__
Observez la sortie ci - dessus,Quand on exécute le scriptfirst.py
Quand,Variables__name__
La valeur de est définie à__main__
.
L'exemple ci - dessus est relativement simple,Et relativement facile à comprendre.Prenons un exemple avec plusieurs fichiers,Disons que nous avons trois scripts,Respectivement:a.py
,b.py
Etc.py
.
Parmi eux,a.py
Le contenu est le suivant::
# a.py
print("__name__ in a.py:", __name__)
from b import *
from c import *
En ce moment,b.py
Le contenu est le suivant::
# b.py
print("__name__ in b.py:", __name__)
c.py
Le contenu est le suivant::
# c.py
print("__name__ in c.py:", __name__)
Si on exécute les ordres python a.py
Les résultats sont les suivants:
__name__ in a.py: __main__
__name__ in b.py: b
__name__ in c.py: c
Notez dans le script a.py
On a vu__name__
La valeur de__main__
, En ce moment dans le script b.py
Moyenne__name__
La valeur deb
, En même temps c.py
Moyenne__name__
La valeur dec
. C'est parce que le script que nous avons lancé était a.py
, Le script est a.py
Variable moyenne__name__
La valeur de sera définie à la chaîne __main__
.
En outre,Scriptb.py
Etc.py
Variables dans·__name__
Reste à b
Etc
, C'est à cause du script b.py
Etc.py
Script qui ne fonctionne pas directement . C'est le script que nous avons lancé a.py
Appeléb.py
Etc.py
Dansprint
Fonctions.
Si on tourne seuls python b.py
Les résultats sont les suivants:
__name__ in b.py: __main__
En conséquence, nous courons python c.py
,Les résultats sont les suivants:
__name__ in c.py: __main__
Observez les deux sorties ci - dessus , Quand on exécute le script directement b.py
Ouc.py
, Variables dans le script correspondant __name__
Tout sera réglé à __main__
.
En tant quePythonDéveloppeurs, Nous créons souvent plusieurs projets dans le cadre d'un même projet Python
Au lieu d'écrire tout le code dans un seul Python
Dans le document. Nous avons donc souvent un seigneur Python
Les documents servent d'entrée aux travaux du projet , D'autres fichiers contiennent également des implémentations de fonctions auxiliaires .
Prenons un exemple., Disons que nous avons deux Python
Documentation,Comme suit:
# main.py
from helper import *
print(greet("bob"))
Mise en œuvre de la fonction auxiliaire helper.py
Il se lit comme suit::
# helper.py
def greet(name):
return "hello " + name
print(greet("testname"))
Si on exécute la commande python main.py
,Les résultats sont les suivants:
hello bob
hello testname
Principalement ci - dessus import
L'instruction sera tirée de helper.py
Introduire toutes les déclarations dans ,Alors...helper.py
Test statement in print(greet("testname"))
Sera également exécuté. Bien que nous puissions le faire en ajoutant des commentaires ou en masquant les commentaires main.py
Ouhelper.py
Pour contrôler la sortie de cette instruction d'essai , Mais c'est le cas des déclarations if __name__=="__main__"
Une situation de proue .
En réponse à ce qui précède , Effectuer la rectification du Code ,Comme suit:
# main.py
from helper import *
print(greet("bob"))
Nous modifions le fichier helper.py
Il se lit comme suit::
def greet(name):
return "hello " + name
if __name__ == "__main__":
print(greet("testname"))
En ce moment,On exécute les ordrespython main.py
,Les résultats sont les suivants:
hello bob
Attention!,En ce momenthelper.py
Variables dans __name__
La valeur dehelper
, Alors...helper.py
Dansif
Déclaration non valable, Nous n'effectuerons pas nos tests print(greet("testname"))
.
En ce moment, Si on exécute les commandes séparément python helper.py
,Les résultats sont les suivants:
hello testname
Fonctionnement séparéhelper.py
Heure, Changez les variables dans le script pour le moment __name__
Sera réglé à__main__
, L'instruction de test sera donc exécutée , Résultats des tests correspondants .
Cet article se concentre surPythonFréquentif __name__=="__main__"
, L'accent est mis sur l'analyse des principes sous - jacents et des scénarios d'application .
Tu as abandonné tes études??
Attention au numéro public《AIAlgorithme》,Pour en savoir plusAIInformations sur l'algorithme.