Introduction détaillée au test de la valeur __name__ en python

高洛峰
Libérer: 2017-03-19 14:01:48
original
1712 Les gens l'ont consulté

Cet article présente principalement les détails du test de la valeur __ name__ en python

Le code utilisé dans le test est le suivant :

#test_name0.py
def test():
    return name

print name
print test()
import test_name1
test_name1.test()
Copier après la connexion
#test_name1.py
def test():
    print name
    
print name
Copier après la connexion

in Le La commande d'exécution et le résultat dans l'interpréteur de haut niveau python sont les suivants :

In [1]: type(name)
Out[1]: str
In [2]: print name
Out[2]: main
In [3]: import test_name0
test_name0
test_name0
test_name1
test_name1
Copier après la connexion

Exécuter python test_name0.py dans cmd, le résultat est le suivant :

main
main
test_name1
test_name1
Copier après la connexion
Copier après la connexion

Il peut être vu à partir de ceci :

(1) Dans l'interpréteur python de niveau supérieur ou dans un script exécuté directement name=='main'

(2) Dans le module appelant name==module<code>name==<a href="http://www.php.cn/code/8212.html" target="_blank">module</a> namenom

(3) Si une situation inattendue est trouvée , il exécute test_name0.py script puis import test_name0, ou import test_name0 puis exécute le script de test_name0.py, le résultat sera

test_name0
test_name0
test_name1
Copier après la connexion

ou

main
main
test_name1
Copier après la connexion

au lieu de

test_name0
test_name0
test_name1
test_name1
Copier après la connexion

ou

main
main
test_name1
test_name1
Copier après la connexion
Copier après la connexion

a organisé les points clés du problème et posé la question sur segmentfault pour comprendre la raison de ce problème.
C'est-à-dire : le module python a un cache Si vous l'importez une fois puis l'importez à nouveau, le code dans la portée de niveau supérieur du module ne sera pas exécuté à nouveau.

(4) La fonction test dans les deux modules test_name0 et test_name1 a le même nom Ce n'est pas un problème car les deux fonctions de test peuvent être distinguées car les noms des modules sont différents. , mais évitez les noms de modules en double.

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal