Je suis nouveau sur Python, c'est donc probablement une question de portée simple. Le code suivant dans un fichier Python (module) m'embrouille légèrement:
if __name__ == '__main__':
x = 1
print x
Dans d'autres langages dans lesquels j'ai travaillé, ce code lèverait une exception, car la x
variable est locale à l' if
instruction et ne devrait pas exister en dehors d'elle. Mais ce code s'exécute et imprime 1. Quelqu'un peut-il expliquer ce comportement? Toutes les variables créées dans un module sont-elles globales / disponibles pour l'ensemble du module?
if
déclaration ci-dessus n'est pas vraie (c'est-à-__name__
dire qu'elle ne l' est pas'__main__'
, par exemple lorsque vous importez le module au lieu de l'exécuter au niveau supérieur), alors ellex
n'aura jamais été liée et laprint x
déclaration suivante jettera unNameError: name 'x' is not defined
.