2016-02-29 95 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_的答案中一樣。