python 赋值生成引用,而不是拷贝
先看个例子:
>>> L = [1, 2, 3]
>>> M = ['X', L, 'Y']
>>> M
['X', [1, 2, 3], 'Y']
>>> L[1] = 0
>>> M
['X', [1, 0, 3], 'Y']
通常共享引用往往就是你真正想要的,不过如果你并不想这样,可以明确地进行拷贝从面避免对象共享。
>>> L = [1, 2, 3]
>>> M = ['X', L[:], 'Y']
>>> M
['X', [1, 2, 3], 'Y']
>>> L[1] = 0
>>> L
[1, 0, 3]
>>> M
['X', [1, 2, 3], 'Y']