请查看该“模块”:
"""Module a"""
a = None
b = None
def gna():
global a
if a is None:
global b
a = 7
b = "b"
print("in a.py: a={}".format(a))
print("in a.py: b={}".format(b))
我以为从另一个模块调用gna()会初始化变量:
"""Module b"""
from a import a, b, gna
print("in b.py: a={}".format(a))
print("in b.py: b={}".format(b))
gna()
print("in b.py: a={}".format(a))
print("in b.py: b={}".format(b))
但是:
% python3 b.py
in b.py: a=None
in b.py: b=None
in a.py: a=7
in a.py: b=b
in b.py: a=None
in b.py: b=None
打电话给gna之后,我真的不知道为什么a和b都为None ...
答案 0 :(得分:3)
将名称导入模块后,该名称将变为本地名称。您应该导入模块a
,而不是从模块a
导入变量b
和a
,以便模块b
能够访问对变量{的相同引用{1}}和a
的值,函数b
对其值进行修改:
gna