2016-02-29 80 views
1

我想用python函数编写一个程序。在一个函数中使用的变量将在其他各种函数中使用。在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

+0

你正在混合全局和本地人。当你将一个变量传递给一个变量是一个局部变量的函数时。除去函数参数并将全局val,val2添加到所有函数的开头。 – user2682863

回答

1

将函数的返回值分配到valval2

val, val2 = func() 
val, val2 = func1(val, val2) 
func2(val, val2) 
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_的答案中一样。