深拷贝和浅拷贝

深拷贝:

    对一个对象所有的层次递归的拷贝,深拷贝可以通过copy.deepcopy()来实现

浅拷贝:

    只对一个对象的顶层进行了拷贝,浅拷贝可以通过copy.copy()来实现

请看下面浅拷贝的示例:

    c列表里面嵌套了两个列表a和b,然后对c进行浅拷贝并赋值给d, 然后查看c和d的id我们可以发现他们的id并不一样,说明浅拷贝对对象c的顶层完成了拷贝,接下来又分别查看了列表c中的a和列表d中的a发现他们的id一致,则说明浅拷贝没有对对象的里层实现拷贝,而只是拷贝了一个引用指向了a.

a = [1,2]
b = [2,3]
c = [a, b, 22]
d = copy.copy(c)
id(c)
58627144
id(d)
58627400
id(c[1])
58182280
id(d[1])
58182280

请看下面深拷贝示例:

    同样的例子只是这次是对c进行了深拷贝,可以发现c中a和d中的a的id不一样,即深拷贝是对对象的所有层次完成了递归的拷贝

>>> import copy
>>> a = [1,2]
>>> b = [2,3]
>>> c = [a, b, 22]
>>> d = copy.deepcopy(c)
>>> id(c)
58182152
>>> id(d)
58419976
>>> id(c[1])
58420040
>>> id(d[1])
56835400

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值