发生这种情况是因为您使用的是不可变值(int和None),并且导入变量就像按值传递事物,而不是按引用传递事物。
如果制作了global_mod.xa列表并操纵了它的第一个元素,则它将按预期工作。
完成后from global_mod import x
,您将x
在模块中创建一个名称,该名称的值与x
in中的值相同global_mod
。对于函数和类之类的东西,这可以按您期望的那样工作,因为人们(通常)以后不会重新分配这些名称。
正如Alex所指出的,如果您使用import global_mod
,然后使用,则global_mod.x
可以避免该问题。您在模块中定义的名称将为global_mod
,它始终指向您想要的模块,然后使用属性访问获取atx
将会为您提供最新值x
。