Je suis nouveau sur Python, donc c'est probablement une simple question de portée. Le code suivant dans un fichier Python (module) me un peu déroutant:Quelle est la portée d'une variable initialisée dans une instruction if?
if __name__ == '__main__':
x = 1
print x
Dans d'autres langues que j'ai travaillé, ce code jetterait une exception, car la variable x
est locale à la déclaration if
et devrait n'existe pas en dehors de cela. 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?
Une autre anomalie que vous ignorez peut-être: si l'instruction 'if' ci-dessus n'est pas vraie (ie, __name__' est * not *' '__main __' ', par exemple lorsque vous importez le module au lieu de l'exécuter top-level), alors 'x' n'aura jamais été lié, et l'instruction' print x' qui suivra lancera un 'NameError: name 'x' n'est pas défini'. – Santa