A differenza di C, le variabili dichiarate in ambito globale sono ancora di portata limitata modulo vengono creati in, quindi è necessario qualificare il nome a
con il modulo in cui vive.
Il global
parola chiave viene utilizzata quando si sta andando a modificare una variabile globale riassegnando, non è necessario quando si fa riferimento a una variabile globale.
Se si sta tentando di accedere a una variabile di un altro file, è necessario importare quel modulo, e per il modo in cui i file sono strutturati avete un paio di modi per risolvere i problemi:
Opzione 1) Spostare il referenziamento di myfunc.print_a
all'interno di una funzione e import main1
all'interno myfunc
vedere a
main1.py
import myfunc
a = 10
def main():
print a
myfunc.print_a()
if __name__ == '__main__':
main()
myfunc.py
import main1
def print_a():
print main1.a
opzione 2) raccomandato Spostare la variabile (s) in un altro modulo e hanno entrambi myfunc
e main1
importarlo.
vals.py
a = 20
main1.py
import vals
from myfunc import print_a
vals.a = 10
print vals.a
print_a()
myfunc.py
import vals
def print_a():
print vals.a
fonte
2013-08-03 16:28:54
+1 per "pericolo fisico". – Matthias
Ma OP vuole usare la stessa variabile 'a' da' main1', non solo vederne una copia –
@RyanHaining Dove vedi una "copia"? Nel mio esempio aggiungo/modifica semplicemente un * riferimento *, che non implica la copia di qualcosa in modo che le modifiche alla variabile in un modulo siano viste nell'altro modulo asweel, tranne quando l'oggetto è immutabile (nel qual caso non si dovrebbe cura per l'identità comunque). – Bakuriu