Python:为什么我的模块变量会丢失它们的内容?
请看一下“模块”: 我原以为从另一个模块调用gna()会初始化变量: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都是空的…一旦你将一
"""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))