Python "global" 关键字不适用于 "from ... import ..."

Python "global" keyword doesn't work with "from ... import ..."

我在 Windows 8 上使用 Python 版本 3.4.2,我发现 "global" 关键字不适用于 "from ... import ..."

为了测试我这样写了我的代码:

# In test1.py
a = 1
def aPlusPlus():
  global a
  a += 1

还有这个:

# In test2.py
from test1 import *
print(a)
aPlusPlus()
print(a)

结果是:

> python3 test2.py
1
1

但是,如果我写 import test1test1.atest1.aPlusPlus(),结果是:

> python3 test2.py
1
2

为什么会这样?

模块之间不共享全局变量。您的 test2 命名空间在另一个模块中获得了对 1a 引用的独立引用。

test1 中设置 a 然后 名称 test.a 重新绑定到新对象(2 整数值) ,但 test2.a 参考不会更新。

如果要在模块之间共享数据,请使用可变对象;例如,两个模块都可以引用相同的 listdict 对象,然后可以在两个位置看到对存储在 中的值的更改。 =20=]