2012-12-10 244 views

回答

10

您指定給一個全局變量,這意味着你需要馬克它作爲一個全球性的:

def somefunction(): 
    global url_request 
    url_request+=1 

當分配給一個變量在局部範圍,這被認爲是本地除非你首先使用global語句來告訴python。

+0

不知道。非常感謝。 – user1561108

+0

甚至沒有想到「+ ='在做任務。 –

4

對於Python 2.7,我們必須使用變量類型:global,local。每個函數都爲變量創建它自己的局部範圍。

從本地範圍你可以閱讀沒有任何限制。您也可以撥打調用全局對象方法,這樣您就可以從全局變量修改。但是您不能重新分配值。

看看這段代碼:

requests = [1,2,3] 

def modify(): 
    requests.append(4) 

def redeclare(): 
    requests = [10,20,30] 

modify() 
print requests 
# will give you [1,2,3,4] 

redeclare() 
print requests 
# will give you [1,2,3,4] 

這是怎麼回事?你不能從本地範圍重新指定requests變量,所以爲你解釋器創建其他變量 - 在本地範圍內爲redeclare調用上下文。

關於您的代碼...首先,您嘗試從全局範圍重新分配變量。爲什麼? url_requestint,int是不可變的,所以操作url_request+=1不會更改值,它應該爲變量名稱重新分配新的值。其次,你沒有指定global標識這個變量。所以解釋器只有一個選擇 - 假設url_request作爲局部變量。但是......您沒有在任何地方聲明它的價值......

UnboundLocalError意味着您嘗試使用變量值執行操作而無需在之前聲明它。希望這可以幫助你更多地瞭解Python變量/名稱/作用域。

相關問題