程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Comprendre si en python Nom = = Main

編輯:Python

1. Introduction

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 - dessusnameEtmainAvant et après2Caractères soulignés.
Moins de commérages,Commençons tout de suite!

2. Variables spéciales

Quand on a fait notrePythonLors 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.pyQuand,Variables__name__La valeur de est définie à__main__.

3. Exemples complexes

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.pyEtc.py.
Parmi eux,a.pyLe contenu est le suivant::

# a.py
print("__name__ in a.py:", __name__)
from b import *
from c import *

En ce moment,b.pyLe contenu est le suivant::

# b.py
print("__name__ in b.py:", __name__)

c.pyLe contenu est le suivant::

# c.py
print("__name__ in c.py:", __name__)

Si on exécute les ordres python a.pyLes 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.pyOn a vu__name__La valeur de__main__, En ce moment dans le script b.pyMoyenne__name__La valeur deb, En même temps c.pyMoyenne__name__La valeur dec. C'est parce que le script que nous avons lancé était a.py, Le script est a.pyVariable moyenne__name__ La valeur de sera définie à la chaîne __main__.

En outre,Scriptb.pyEtc.pyVariables dans·__name__ Reste à bEtc, C'est à cause du script b.pyEtc.py Script qui ne fonctionne pas directement . C'est le script que nous avons lancé a.pyAppeléb.pyEtc.pyDansprintFonctions.

Si on tourne seuls python b.pyLes 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.pyOuc.py, Variables dans le script correspondant __name__ Tout sera réglé à __main__.

4. Utiliser le scénario

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 PythonDans 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 PythonDocumentation,Comme suit:

# main.py
from helper import *
print(greet("bob"))

Mise en œuvre de la fonction auxiliaire helper.pyIl 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.pyOuhelper.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 .

5. Solutions

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.pyIl 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.pyDansifDé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.pyHeure, 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 .

6. Résumé

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.


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved