Todos los documentos de Python que he leído parecen indicar, aparte de los efectos secundarios, que si importa el módulo A y luego la referencia A.a, está haciendo referencia a la misma variable como si hubiera escrito "de A import a a".¿Por qué desde ... la importación parece vincularse al valor en tiempo de importación en Python?
Sin embargo, ese no parece ser el caso aquí y no estoy seguro de lo que está pasando. Estoy usando Python 2.6.1.
Si creo un alpha.py módulo:
bravo = None
def set_bravo():
global bravo
bravo = 1
A continuación, cree un script que importa el módulo:
import sys, os
sys.path.append(os.path.abspath('.'))
import alpha
from alpha import bravo
alpha.set_bravo()
print "Value of bravo is: %s" % bravo
print "Value of alpha.bravo is: %s" % alpha.bravo
entonces consigo esta salida:
Value of bravo is: None
Value of alpha.bravo is: 1
Por qué ¿es eso?
Ah. Pensé que 'importar' nombres de variables importados de un módulo al espacio de nombres local, pero parece que enlaza el mismo nombre en el espacio de nombres local con el * valor * de la variable importada. No estoy seguro si eso es poco convincente o si soy demasiado cojo para darme cuenta de que no es así. –
Correcto. Python no tiene "variables" per se, solo "nombres". –