Tutti i documenti Python che ho letto sembrano indicare che, a parte gli effetti collaterali, che se si importa il modulo A e si fa riferimento a A.a, si fa riferimento alla stessa variabile come se si scrivesse "da A import a".Perché da ... l'importazione sembra legarsi al valore al momento dell'importazione in Python?
Tuttavia, non sembra essere il caso qui e non sono sicuro di cosa sta succedendo. Sto usando Python 2.6.1.
Se creo un alpha.py modulo:
bravo = None
def set_bravo():
global bravo
bravo = 1
Poi creare uno script che importa il modulo:
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
allora ottengo questo output:
Value of bravo is: None
Value of alpha.bravo is: 1
Perché è questo?
Ah. Ho pensato di importare i nomi delle variabili importati da un modulo nello spazio dei nomi locale, ma sembra che leghi lo stesso nome nello spazio dei nomi locale al valore * * della variabile importata. Non sono sicuro che sia zoppo o sono troppo debole per capire che non lo è. –
corretto. Python non ha "variabili" di per sé, solo "nomi". –