python copy

直接赋值:其实就是对象的引用(别名)。

>>> 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']]



版权声明:本文为u013608336原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。