在某些python模块之间共享全局变量

时间:2019-07-28 16:32:51

标签: python global-variables shared-libraries

我在某些模块之间共享全局变量时遇到一些问题。 在我的程序中,我想定义一些全局变量,这些变量是任何模块的共同点,例如“ counter”。为了做到这一点,我定义了一个仅包含此全局变量的模块,称为datadef.py。简单地说,是一个单行模块,其默认值为零

counter=1

因此,我定义了“测试”模块

从datadef导入*

print (counter)

counter+=1

print (counter)

运行“ test”时,输出为1和2。 没关系,“测试”模块使用“数据定义”模块中定义的“计数器”,并为“计数器”分配适当的值。

当我创建一个带有某些功能的新模块“ lib”并且这些功能要访问“ countdef”变量(在“ datadef”模块中定义)并进行修改时,出现问题。 “ lib”模块非常简单:

datadef模块

counter=1

lib模块

从datadef导入*

def resetcounter():
    global counter
    counter=0
    return

我修改主程序“测试”以包括此新的库模块

主程序

from datadef import *

from lib import *

print (counter)
counter+=1
print (counter)
resetcounter()
print (counter)

运行“ test”时,结果为1,2,2,没有运行时错误,而不是预期值1,2,0。 “ resetcounter”功能不会作用于全局变量“ counter”,不会作用于不同于“ test”和“ datadef”模块中sed的“ counter”变量。

如何才能在许多库模块之间共享数据定义模块,以使所有模块都具有相同的变量(而不是本地副本)? 如何在任何模块上访问相同的全局变量?

1 个答案:

答案 0 :(得分:0)

在某些python模块之间共享全局变量

#global.py
current_value=0

创建一个Python程序文件以访问全局变量

#updater.py
import global
def update_value():
  global.current_value = 100

创建另一个Python程序以测试值是否更改

#display_value.py
import global
import updater
updater.update_value()
print(global.current_value)

http://net-informations.com/python/iq/global.htm