访问跨模块变量的不同导入方式的结果不同

时间:2014-08-02 05:09:18

标签: python

我有两个模块:a.py和b.py

a.py:

foo = 0
def increase():
    global foo
    foo += 1

b.py:

from a import *
increase()
print(foo)

运行b.py会得到结果:0,但我期望的结果是1 然后我修改了b.py

b.py:

import a
a.increase()
print(a.foo)

然后我得到了正确的结果:1

我的问题是为什么b.py的第一版出现了错误的结果。导入全局变量的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

导入全局变量的正确方法是重新设计代码,这样您就不需要了。你应该导入函数,也许是常量(通常是Python中的UPPER_CASE),但不是全局变量。全局变量在库中已经足够糟糕了,但是在多个模块中使用它们只会遇到麻烦。