>>> x = []
>>> y = [1,2,3]
>>> def func1(L):
... x+=L
...
>>> def func2(L):
... x.extend(L)
...
>>> func1(y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func1
UnboundLocalError: local variable 'x' referenced before assignment
>>> func2(y)
>>> x
[1, 2, 3]
为什么 list extend() 方法可以改变非全局变量,而 += 运算符不能?据我了解,只要函数不分配变量,它就可以在没有全局指定的情况下读取它。但在这种情况下,函数确实设置了值。