2015-09-04 79 views
0

我試圖訪問我的函數中的計數器變量,爲什麼它不工作,我該如何解決它?函數外的Python變量

相關代碼:

sum = 0 
counter = 0 

def newFibo(a, b) : 
    if(counter > 4000000) : 
     return 

    c = a + b 

    sum += c 
    counter +=1 
    newFibo(b,c) 

newFibo(1,2) 
print(sum) 

錯誤:「局部變量‘計數器’賦值之前引用的」

+0

簡單的解決方案是在函數的開始處添加一個'global counter,sum'。更好的解決方案是改變你的函數,所以它不依賴*和修改一個全局變量。 – poke

回答

0

您需要使用關鍵字global告訴python的一個變量是當前函數之外。

因此,基本上在def newFibo(a, b):之後加global sum, counter即可。

0

在Python中,如果你想修改一個函數中的全局變量,你必須將其聲明爲global裏面的功能:

def newFibo(a, b) : 
    global counter, sum 
    .............. 

注意不要在變量需要它只能在函數內部讀取但不能修改。