当前位置:首页 >> 编程语言 >> 【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别,paopaowang

【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别,paopaowang

0evadmin 编程语言 1
文件名:【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别,paopaowang 【Python 必会技巧】copy 模块中 copy() 与 deepcopy() 函数的区别

Python 中赋值语句不复制对象,而是在目标和对象之间创建绑定关系。对于自身可变或者包含可变项的集合对象,开发者有时会需要生成其副本用于改变操作,进而避免改变原对象。copy 模块提供了通用的浅层复制 copy() 和深层复制 deepcopy() 操作。

copy() 仅复制对象本身,而不对其中的子对象进行复制,如果对原子对象进行修改,那么浅层复制之后的对象也会随着修改。

deepcopy() 是真正意义上的复制,即重新开辟一片空间,经常说的复制实际上就是 deepcopy,深层复制之后的对象不受原对象的影响,无论原对象发生什么修改,深层复制的对象都不会发生改变。

>>> import copy>>> list1 = [1, 2, [3, 4], 5]>>> list2 = copy.copy(list1)>>> list3 = copy.deepcopy(list1)>>> list2 == list3True>>> list2 is list3False

以上两个列表 list2 和 list3 分别经过了浅层复制和深层复制,虽然值是一样的,但是本质上并不是同一个列表

>>> import copy>>> list1 = [1, 2, [3, 4], 5]>>> list2 = copy.copy(list1)>>> list3 = copy.deepcopy(list1)>>> list1[2][0] = 3333>>> list1[1, 2, [3333, 4], 5]>>> list2[1, 2, [3333, 4], 5]>>> list3[1, 2, [3, 4], 5]

将原列表的子对象 [3, 4] 改成 [333, 4],可以看到浅层复制后 list2 的值也会改变,而深层复制后 list3 的值并不会改变。

简单来说:

浅层复制 copy():复制父对象,子对象仍然使用引用的方式;深层复制 deepcopy():复制了对象和对象的所有子对象。
协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接