認爲我在這裏瘋了。UnboundLocalError:分配之前引用的局部變量'url_request'
url_request = 0
def somefunction():
url_request+=1
if __name__ =='__main__':
somefunction()
給我UnboundLocalError。我在這裏錯過了什麼重要的概念?
認爲我在這裏瘋了。UnboundLocalError:分配之前引用的局部變量'url_request'
url_request = 0
def somefunction():
url_request+=1
if __name__ =='__main__':
somefunction()
給我UnboundLocalError。我在這裏錯過了什麼重要的概念?
您指定給一個全局變量,這意味着你需要馬克它作爲一個全球性的:
def somefunction():
global url_request
url_request+=1
當分配給一個變量在局部範圍,這被認爲是本地除非你首先使用global
語句來告訴python。
對於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_request
是int
,int
是不可變的,所以操作url_request+=1
不會更改值,它應該爲變量名稱重新分配新的值。其次,你沒有指定global
標識這個變量。所以解釋器只有一個選擇 - 假設url_request
作爲局部變量。但是......您沒有在任何地方聲明它的價值......
UnboundLocalError
意味着您嘗試使用變量值執行操作而無需在之前聲明它。希望這可以幫助你更多地瞭解Python變量/名稱/作用域。
不知道。非常感謝。 – user1561108
甚至沒有想到「+ ='在做任務。 –