Soy nuevo en Python, por lo que esta es probablemente una pregunta de scoping simple. El siguiente código en un archivo de Python (módulo) me confunde un poco:¿Cuál es el alcance de una variable inicializada en una instrucción if?
if __name__ == '__main__':
x = 1
print x
En otros idiomas en los que he trabajado, este código sería una excepción, ya que la variable x
es local a la declaración if
y debe no existir fuera de él. Pero este código se ejecuta e imprime 1. ¿Alguien puede explicar este comportamiento? ¿Están todas las variables creadas en un módulo global/disponible para todo el módulo?
Otra peculiaridad que quizás no conozcas: si la instrucción 'if' anterior no es verdadera (es decir,' __name__' es * no * ''__main __'', por ejemplo, cuando importas el módulo en lugar de ejecutarlo nivel superior), entonces 'x' nunca se habrá enlazado, y la siguiente declaración' print x' arrojará un 'NameError: name 'x' no está definido'. – Santa