我对这种奇怪的行为感到非常困惑。我有一个名为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}