python中的重置字典无法从模块中工作



我对这种奇怪的行为感到非常困惑。我有一个名为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对象被导入,并在import运行时绑定到一个名称。第二文件中的X是附加到原始{}的第二名称。或者,换句话说,它是一个单独的变量,恰好与原始文件中的X同名。

更改原始文件中的X标签不会更改第二个文件中X正在查看的对象,因为它们是不同的标签(具有相同的名称(。

这类似于这不会改变Y:

X = {}
Y = X  # Y is the "imported X"
X = {'a':1,'b':2}

相关内容

  • 没有找到相关文章

最新更新