• 技术文章 >后端开发 >Python教程

    python中的深拷贝与浅拷贝

    巴扎黑巴扎黑2016-11-29 11:35:41原创343
    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的话其实是做了浅拷贝的因为是父对象所以:父对象不受影响了是单独的两块区域 。

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

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:Python入门 函数 下一篇:python面向对象
    大前端线上培训班

    相关文章推荐

    • 详解Python的迭代器、生成器以及相关的itertools包• 分析在Python中何种情况下需要使用断言• python fabric实现远程操作和部署示例• python数据结构之二叉树的统计与转换实例• Django框架中方法的访问和查找

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网