Eu sou novo no Python, então essa é provavelmente uma questão de escopo simples. O código a seguir em um arquivo Python (módulo) está me confundindo um pouco:
if __name__ == '__main__':
x = 1
print x
Em outros idiomas em que trabalhei, esse código geraria uma exceção, pois a x
variável é local para oif
instrução e não deveria existir fora dela. Mas esse código é executado e imprime 1. Alguém pode explicar esse comportamento? Todas as variáveis criadas em um módulo são globais / disponíveis para todo o módulo?
if
afirmação acima não é verdadeira (ou seja,__name__
é não'__main__'
, por exemplo, quando você importa o módulo em vez de executá-lo de nível superior), entãox
nunca foram ligados, e da subsequenteprint x
declaração jogará aNameError: name 'x' is not defined
.