Python:为什么我的模块变量丢失内容?

时间:2018-11-26 14:24:48

标签: python python-3.x global-variables

请查看该“模块”:

"""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 ...

1 个答案:

答案 0 :(得分:3)

将名称导入模块后,该名称将变为本地名称。您应该导入模块a,而不是从模块a导入变量ba,以便模块b能够访问对变量{的相同引用{1}}和a的值,函数b对其值进行修改:

gna