如何从另一个模块python中的全局变量获取值

时间:2015-12-22 00:36:30

标签: python python-2.7 python-3.x

我有文件说test1.py并且它有变量var1 = '',并且在test1.py中的一个方法中我将var1的值更新为

global var1 
var1 = 'new_value'

我可以通过test1.py中的其他方法打印来更新值。 现在我有另一个文件test2.py我将var1称为var_new = test1.var1 但是当我打印它时,我仍然会得到''。 我认为在套件开始时它正在初始化所有模块。但是当我在test2.py中调用方法时,它在初始化时获得了价值?我怎样才能获得更新价值? 因此var_new打印''

如果我使用get_var()方法,那么我会获得更新值。所以我想我总是创建这个方法吗?

2 个答案:

答案 0 :(得分:1)

我想我终于明白了这个问题,根据你的描述,你有类似的东西

test1.py

var1=""

def foo():
    global var1
    var1="new_valor"

def bar():
    print(var1)

test2.py

import test1
var_new=test1.var1
print(var_new)

如果是这种情况,是的,你得到一个空字符串,因为你没有调用foo来修改var1,所以你必须先调用它或者从test2修改,因为foo没有被调用在加载时,所以var1保持其首次分配的值。

答案 1 :(得分:0)

通过这样做:

var1 = test1.var1

将test1.var1字符串的内容复制到var1中。但如果以后修改test1.var1,则var1不会。

>>> var1="test"
>>> var2=var1
>>> var2+= "a"
>>> var2
'testa'
>>> var1
'test'

因此,如果你想获得test1.var1的值,你应该总是访问它test1.var1