Ich schreibe ein Python-Modul und ich habe eine Funktion, die eine neue Variable im Modul definiert. Ich möchte eine Variable festlegen, auf die in der Datei zugegriffen werden kann, die die Datei importiert. Wenn das verwirrend ist, hier ist mein Code:So bearbeiten Sie globale Variable im Modul?
# main.py
import other_module
other_module.set_variable("var1")
print(other_module.var1) # This is not a NameError
print(var1) # NameError
Allerdings, wenn ich etwas tun leicht anders:
# main.py
from other_module import *
set_variable("var1")
print(var1) # NameError
print(other_module.var1) # NameError
Und other_module.py
:
# other_module.py
def set_variable(name):
exec("""
global %s
%s = 5
""" % (name, name))
Ich habe keine Kontrolle über main.py
. Das ist der Code des Verbrauchers. Ich möchte in der Lage sein, main.py
's globals zuzugreifen und zu ändern. Ich möchte, dass das funktioniert:
# main.py
from other_module import *
set_variable("var")
print(var) # This should print 5
Diese Frage ist sehr ähnlich zu http://stackoverflow.com/questions/37534046 –
Warum sind Sie exec statt nur 'Globals mit()'? – BrenBarn
@BrenBarn Wie würde ich 'globals()' verwenden? 'globals(). append'? – NoOneIsHere