该错误似乎并不能很好地说明根本问题。Mike解释了这些消息,但是没有解释根本原因。
实际的问题是,在python中,您无法为封闭变量赋值。因此在function2中,“
a”是只读的。分配给它时,您将创建一个新变量,正如Mike指出的那样,您在编写之前先进行了读取。
如果要从内部范围分配给外部变量,则必须作弊,如下所示:
def function1(): al = [10] def function2(): print al[0] al[0] -= 1 if al[0]>0:function2() function2()
所以al是不可变的,但其内容不是,您可以在不创建新变量的情况下对其进行更改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)