爲什麼這項工作:作用域錯誤
def function1():
a = 10
def function2():
print a
function2()
但這並不:
def function1():
a = 10
def function2():
print a
a -= 1
if a>0:
function2()
function2()
我得到這個錯誤:
UnboundLocalError: local variable 'a' referenced before assignment
實際上,這是在設計這個功能,你不能分配給非本地範圍的關鍵點。 (注意:'al'是* mutable *;這就是爲什麼這是有效的。) – 2010-03-25 15:36:44
爲了清楚起見,我認爲重要的是區分變量和al包含的值。它總是回到我的指針,所以讓我說這個;您不能將al指向新列表,但可以更改al指向的列表的內容。 al - > [v1,v2,v3] al不能更改,但v1,v2和v3可以更改。 Mike絕對正確,這使得al可變,因爲在我們的術語中al *是*列表而不是指向列表的指針。 – charlieb 2010-03-25 16:21:56
+1非常好的答案。 – 2010-03-26 04:39:44