设为首页收藏本站
查看: 47|回复: 0

[PHP] python中的浅拷贝和深拷贝

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34268
主题
17031
UID
1347
M币
67
贡献
17170

  • 发表于 2017-5-14 02:44:00 | 显示全部楼层 |阅读模式
    在讲什么是深浅拷贝之前,我们先来看这样一个现象:

    a = ['scolia', 123, [], ] b = a[:] b[2].append(666) print a print b
    所以,当我们通过b去修改里面的空列表的时候,其实就是修改内存中的同一个对象,所以会影响到a。
    a = ['scolia', 123, [], ] b = a[:] print id(a), id(a[0]), id(a[1]), id(a[2]) print id(b), id(b[0]), id(b[1]), id(b[2])
    代码验证无误,所以虽然a和b是两个不同的对象,但是里面的引用都是一样的。这就是所谓新的对象,旧的内容。
    但是,浅拷贝还不仅如此,看下面:
    a = ['scolia', 123, [], ] b = a[:] b[1] = 666 print a print b
    代码验证一下:
    a = ['scolia', 123, [], ] b = a[:] b[1] = 666 print id(a), id(a[0]), id(a[1]), id(a[2]) print id(b), id(b[0]), id(b[1]), id(b[2])
    看下代码验证:
    from copy import deepcopy a = ['scolia', 123, [], ] b = deepcopy(a) b[1] = 666 print id(a), id(a[0]), id(a[1]), id(a[2]) print id(b), id(b[0]), id(b[1]), id(b[2])
    以上这篇深入理解python中的浅拷贝和深拷贝就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。
    更多python中的浅拷贝和深拷贝相关文章请关注PHP中文网!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表