全局变量在python中引用

时间:2016-02-29 18:31:42

标签: python python-2.7 scope global-variables

我正在尝试用python函数编写程序。一个函数中使用的变量将在各种其他函数中使用。

我在第一个函数中声明它是全局的,然后在第二个函数中使用返回的值。但是在第三个函数中,我想使用第二个函数中的更新值,但我只能从第一个函数中获取值。

def func():
    global val, val2
    val = 3
    val2 = 4
    return val, val2

def func1(val, val2):
    val = val + 1 
    val2 = val2 + 1
    return val, val2

def func2(val,val2):
    val = val + 1
    val2 = val2 + 1
    print val, val2

func()
func1(val, val2)
func2(val, val2)

我希望得到5,6作为答案,但我得到4,5

2 个答案:

答案 0 :(得分:1)

将功能的返回值分配给valval2

val, val2 = func()
val, val2 = func1(val, val2)
func2(val, val2)

答案 1 :(得分:1)

如果将变量声明为函数参数,则它是此函数的局部变量。在您的情况下,如果您声明def func1(val,val2):,那么val,val2将在函数func1中都是本地的。如果您想使用全局变量,请执行以下操作:

def func():
    global val,val2
    val=3
    val2=4
    return val,val2
def func1():
    global val,val2
    val=val+1
    val2=val2+1
    return val,val2
def func2():
    global val,val2
    val=val+1
    val2=val2+1
    print val,val2
func()
func1()
func2()

返回:

5 6

但我认为如果不需要使用全局变量,应该避免使用它们(检查Why are global variables evil?)。考虑使用return正确的方法,如pp _的答案。