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

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

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2017-5-14 02:44:00 | 显示全部楼层 |阅读模式
    copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
    copy.deepcopy 深拷贝 拷贝对象及其子对象
    示例:
    >>> import copy
    >>> a=[1,2,3,4,['a','b']]
    >>> b=a # 传引用。相当于现在b与a指向了同一块内存区域
    那样的话a的任何修改b将同步
    >>> c=copy.copy(a) # 浅拷贝。相当于c与a现在是两个单独的内存区域
    >>> d=copy.deepcopy(a) # 深拷贝。相当于是完全独立的内存区域
    >>> a.append(5) # 这个是在外层对象即父对象处理会影响到copy浅拷贝
    >>> a[4].append('c') # 这个是内部子对象不会影响.即还是指向一块
    >>> print 'a',a
    a [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    >>> print 'b',b
    b [1, 2, 3, 4, ['a', 'b', 'c'], 5]
    >>> print 'c',c
    c [1, 2, 3, 4, ['a', 'b', 'c']]
    >>> print 'd',d
    d [1, 2, 3, 4, ['a', 'b']]
    >>>
    如果受到拷贝的话,那就是相互独立的了。
    像copy.copy的话其实是做了浅拷贝的因为是父对象所以:父对象不受影响了是单独的两块区域 。

    结论:哪个拷贝了哪个就是单独的内存区域。与原始的内存是分开的。你再怎么修改也影响不到我
    回复

    使用道具 举报

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

    本版积分规则

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