【发布时间】:2016-07-07 13:35:44
【问题描述】:
我是 Python 新手,我正在尝试使用来自不同包中不同模块的包中模块的全局计数器。我想要做的是在模块中声明一个变量并将其导入不同包中的其他模块。我对这个问题做了一个简单的测试,它也在这里发生。我将所有文件放在同一个目录中(它们现在在同一个包中,但问题是一样的)。
文件glbcntmod.py:
glbcnt = 0
文件glbfuncmod.py:
from glbcntmod import glbcnt
def glbfunc():
global glbcnt
print 'glbcnt = ',glbcnt
文件:test.py
#!/usr/bin/env python
from glbcntmod import glbcnt
from glbfuncmod import glbfunc
loccnt = 0
def localfunc():
print 'loccnt = ',loccnt
if __name__ == '__main__':
glbcnt = 0
for i in xrange(0,4):
glbfunc()
localfunc()
glbcnt += 1
loccnt += 1
当我运行 test.py 时,结果如下所示。 loccnt 正在递增,但 glbcnt 始终为 0。这是什么问题?
glbcnt = 0
loccnt = 0
glbcnt = 0
loccnt = 1
glbcnt = 0
loccnt = 2
glbcnt = 0
loccnt = 3
【问题讨论】:
-
为什么 test.py 中有
glbcnt = 0? -
您可以考虑使用分布式键/值存储,例如 redis。redislabs.com/ebook/redis-in-action/part-2-core-concepts-2/…
-
@polku 只是一个错误。如果我删除它,它是一样的。
标签: python python-2.7 global-variables