让我们想象一下我有两个文件
# foo.py
a = 5
和
#bar.py
def call_foo():
import foo
foo.a += 1
print(foo.a)
call_foo() # Prints 6
call_foo() # Prints 7
每次打电话给call_foo()
时,我都希望打印出来。
换句话说,import foo
应该像创建一个新对象一样。
答案 0 :(得分:0)
您可以在本地重新创建模块 globals ,避免修改其全局状态,例如:
def call_foo():
import foo
foo_globals = foo.__dict__.copy() # shallow copy, be careful!
foo_globals["a"] += 1
print(foo_globals["a"])
否则,您每次加载模块之前都必须卸载模块(这可能会产生很多不良后果,因此不推荐),例如:
import sys
def call_foo():
sys.modules.pop("foo", None)
import foo
foo.a += 1
print(foo.a)