我正在尝试用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
。
将函数的返回值分配给val
和val2
。
val, val2 = func()
val, val2 = func1(val, val2)
func2(val, val2)
如果变量被声明为函数参数,则它是该函数的局部变量。在您的情况下,如果您声明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
但我认为,如果不需要使用全局变量,就应该避免使用它们(请检查"为什么全局变量是邪恶的?"(。考虑以正确的方式使用return
,就像pp_的答案一样。