Sono un po 'confuso su come funzionano le variabili globali. Ho un grande progetto, con circa 50 file, e ho bisogno di definire variabili globali per tutti quei file.Utilizzo di variabili globali tra file?
Quello che ho fatto è stato definirli nei miei progetti main.py
di file, come segue:
# ../myproject/main.py
# Define global myList
global myList
myList = []
# Imports
import subfile
# Do something
subfile.stuff()
print(myList[0])
che sto cercando di utilizzare myList
in subfile.py
, come seguendo
# ../myproject/subfile.py
# Save "hey" into myList
def stuff():
globals()["myList"].append("hey")
Un altro senso che provato, ma non ha funzionato né
# ../myproject/main.py
# Import globfile
import globfile
# Save myList into globfile
globfile.myList = []
# Import subfile
import subfile
# Do something
subfile.stuff()
print(globfile.myList[0])
E dentro subfile.py
ho avuto questa:
# ../myproject/subfile.py
# Import globfile
import globfile
# Save "hey" into myList
def stuff():
globfile.myList.append("hey")
Ma ancora una volta, non ha funzionato. Come dovrei implementarlo? Capisco che non può funzionare in questo modo, quando i due file non si conoscono veramente bene (bene il subfile non sa main), ma non riesco a pensare a come farlo, senza usare io scrivere o pickle, che Non voglio farlo.
In realtà, il tuo secondo approccio funziona perfettamente per me. main.py stampa correttamente "hey". Puoi essere più specifico su ciò che tu per "non ha funzionato"? – rodion
@rodion: cicli di importazione: il codice nel file secondario tenta di importare globfile, che nel suo corpo si importa indietro – jsbueno
'NameError: nome 'myList' non è definito' da' main.py' linea 'print (globfile.myList [0 ]) ' –