python中的重置字典无法从模块中工作
我对这种奇怪的行为感到非常困惑。我有一个名为test.py的文件,其中包含以下内容:python中的重置字典无法从模块中工作,python,dictionary,global,Python,Dictionary,Global,我对这种奇怪的行为感到非常困惑。我有一个名为test.py的文件,其中包含以下内容: X={} def fun(): global X X = {'a':1,'b':2} 然后,我将该文件作为模块从控制台导入,并调用该函数 from test import * fun() 我希望X会被更新,但它仍然是一本空字典。 我正在使用 Python 3.8.2(默认值,2020年7月16日,14:00:26) 有人能复制这个吗?你知道为什么会这样吗 谢谢。在第二个文件中,导入X对象,
X={}
def fun():
global X
X = {'a':1,'b':2}
然后,我将该文件作为模块从控制台导入,并调用该函数
from test import *
fun()
我希望X
会被更新,但它仍然是一本空字典。
我正在使用
Python 3.8.2(默认值,2020年7月16日,14:00:26)
有人能复制这个吗?你知道为什么会这样吗
谢谢。在第二个文件中,导入
X
对象,并在运行import
时将其绑定到名称。第二个文件中的X
是附加到原始{}
的第二个名称。或者,换句话说,它是一个单独的变量,恰好与原始文件中的X
同名
更改原始文件中的X
标签不会更改第二个文件中的X
所查看的对象,因为它们是不同的标签(具有相同的名称)
这类似于这不会改变的方式:
X = {}
Y = X # Y is the "imported X"
X = {'a':1,'b':2}
另见: