为什么这项工作:作用域错误
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