Python中 copy, deepcopy 的区别

copy就是表面上复制一份,复制完的东西里面,第一层的都是自己的,但是深层的东西还是指向原来的对象,deepcopy就是真正的完全独立搞一个备份出来

通过例子来说明

例子1

import copy
origin = 1
cop1 = copy.copy(origin)
cop2 = copy.deepcopy(origin)

origin = 2

print cop1
#输出1
print cop2
#输出2

例子2

import copy
origin = [1,2,[3,4]]
cop1 = copy.copy(origin)
cop2 = copy.deepcopy(origin)
origin[2][0] = “hello world!”
print origin

输出[1,2,[“hello world!”,4]]

print cop1

输出[1,2,[“hello world!”,4]]

print cop2

输出[1,2,[3,4]]

一篇非常好的说明:https://iaman.actor/blog/2016/04/17/copy-in-python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python,`copy`和`deepcopy`都是用于复制对象的函数,但它们之间有一些区别。 `copy`是浅拷贝,它创建了一个新的对象,但是这个新对象仍然与原对象共享内部嵌套对象的引用。换句话说,新对象的某些内部对象实际上是原对象相同的对象。当你修改一个嵌套对象时,这个改变也会反映在其他拷贝。 `deepcopy`是深拷贝,它创建了一个全新的对象,并且递归地复制原始对象及其所有嵌套对象。这意味着新对象与原对象以及其嵌套对象完全独立,对其一个对象的任何改变都不会影响其他对象。 具体来说,`copy`只复制了原始对象的引用,而没有复制对象自身。而`deepcopy`创建了一个全新的对象,并且递归地复制所有嵌套对象。 下面是一个简单的示例来展示它们之间的区别: ```python import copy # 原始列表 original_list = [[1, 2, 3], [4, 5, 6]] # 浅拷贝 shallow_copy = copy.copy(original_list) # 深拷贝 deep_copy = copy.deepcopy(original_list) # 修改原始列表的第一个元素 original_list = 10 print(original_list) # 输出: [[10, 2, 3], [4, 5, 6]] print(shallow_copy) # 输出: [[10, 2, 3], [4, 5, 6]] print(deep_copy) # 输出: [[1, 2, 3], [4, 5, 6]] ``` 在上面的示例,原始列表被修改后,浅拷贝和原始列表都发生了改变,而深拷贝保持了不变。这是因为浅拷贝只复制了嵌套列表的引用,而深拷贝创建了一个新的嵌套列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值