另一个模块中的更改变量不会更新

时间:2017-08-06 13:36:28

标签: python python-3.x module

我正在尝试更改变量影响另一个模块。其他模块似乎没有注意到这种变化。

a.py:

import b

b.changeMyVar()
print(b.myVar["key"])

b.py:

myVar = {"key": "foo"}

def changeMyVar():
    myVar["key"] = "value"

我期望(在运行a.py时):

value

我得到了什么:

foo

如何使这项工作?为什么不起作用?如果myVar是由changeMyVar变异的字典(两种情况都出现在我的程序中),情况会有所不同吗?

请注意我没有写from b import *,这是我理解的邪恶。

编辑1:正如评论者指出的那样,如果myVar是一个不可变对象,那么如果没有global myVar,这将无效。我改变了这个例子,以更好地反映我的意思。

编辑2:我忘记添加b.但是,我的问题仍未改变。定义了变量,但从其他模块看不到运行时更改。我再次编辑了代码以澄清我的问题。

1 个答案:

答案 0 :(得分:2)

import b不会将myVarchangeMyVar导入a.py的范围,它只会定义引用该模块的名称b

因此,您必须使用名称b访问a.py中的myVarchangeMyVar()

import b

b.changeMyVar()
print(b.myVar["key"])