我正在用来电脚本写作:
from XXX import config
....
config.limit = limit
data.load_data()
其中config.py
有
limit = None
内部和data.py
有
from .config import *
...
def load_data():
...
if limit is not None:
limit_data(limit)
我希望每个人都在limit
模块中引用相同的变量config.py
。不幸的是,我看到debygging时,load_data
看到了None
限制,尽管之前设置了它。
为什么?
答案 0 :(得分:4)
执行from .config import *
时,您要将limit
的{{1}}副本导入您自己的命名空间。驻留在config
中的limit
实体与您导入的实体不同。它们位于各自的名称空间中,彼此独立。
作为解决方法,请考虑以下示例:
config
A.py
foo = 5
def print_foo():
print(foo)
B.py
现在,运行import A
A.foo = 10
A.print_foo()
应该给出:
B.py
意思是,您可以通过添加名称空间限定符来引用相同的变量。
对于相对导入,您可以执行类似的操作:
$ python B.py
10
在app/
__init__.py
A.py
B.py
,您需要致电B.py
。然后,您将变量称为import app.A
。