直接赋值:其实就是对象的引用(别名)。
>>> a= [1,2,3]
>>> b=a
>>> b.append(4)
>>> b
[1, 2, 3, 4]
>>> a
[1, 2, 3, 4]
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
>>> import copy
>>> a = [1, 2, 3, 4, ['a', 'b']]
>>> c = copy.copy(a)
>>> a.append(5)
>>> a
[1, 2, 3, 4, ['a', 'b'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b']]
>>> a[4].append('c')
>>> a
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c']]
>>>
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
>>> a = [1, 2, 3, 4, ['a', 'b']]
>>> d = copy.deepcopy(a)
>>> a.append(5) #修改对象a ,
>>> a[4].append('c')
>>> a
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> d
[1, 2, 3, 4, ['a', 'b']]