Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:为什么我的模块变量会丢失它们的内容?_Python_Python 3.x_Global Variables - Fatal编程技术网

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

Python:为什么我的模块变量会丢失它们的内容?,python,python-3.x,global-variables,Python,Python 3.x,Global Variables,请看一下“模块”: 我原以为从另一个模块调用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)) 但是: 我真的不明白为什么在调用gna后a和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))
但是:


我真的不明白为什么在调用gna后a和b都是空的…

一旦你将一个名称导入到一个模块中,这个名称就会变成本地名称。您应该导入模块
a
,而不是从模块
a
导入变量
a
b
,以便模块
b
能够访问变量
a
b
的相同引用,函数
gna
修改变量的值:

"""Module b"""

import a

print("in b.py: a={}".format(a.a))
print("in b.py: b={}".format(a.b))

a.gna()

print("in b.py: a={}".format(a.a))
print("in b.py: b={}".format(a.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
"""Module b"""

import a

print("in b.py: a={}".format(a.a))
print("in b.py: b={}".format(a.b))

a.gna()

print("in b.py: a={}".format(a.a))
print("in b.py: b={}".format(a.b))