foo.py :
i = 10
def fi():
global i
i = 99
酒吧.py :
import foo
from foo import i
print i, foo.i
foo.fi()
print i, foo.i
这是有问题的。为什么 foo.i
改变时 i
没有改变?
最佳答案
Ross 所说的是像这样重构 foo:
_i = 10
def getI():
return _i
def fi():
global _i
_i = 99
然后你会看到它按照你想要的方式工作:
>>> import foo
>>> print foo.getI()
10
>>> foo.fi()
>>> print foo.getI()
99
从某种意义上说,它也“更好”,因为您可以避免导出全局变量,但仍提供对其的读取访问权限。
关于python - python 中的导入是静态的,有什么解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/744325/