>>> 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()メソッドが非グローバル変数を変更できるのに、+ =演算子は変更できないのはなぜですか?私の理解では、関数が変数を割り当てない限り、グローバル指定なしで変数を読み取ることができます。ただし、この場合、関数は値を設定します。