>>> 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]
爲什麼列表extend()方法會改變非全局變量,但+ =運算符不能?據我所知,只要函數不分配變量,它就可以在沒有全局名稱的情況下讀取它。但在這種情況下,函數確實設置了值。python - 爲什麼可以擴展修改一個沒有全局名稱的值?