美文网首页
Python浅拷贝与深拷贝

Python浅拷贝与深拷贝

作者: Recalcitrant | 来源:发表于2019-06-30 15:26 被阅读0次

    Python浅拷贝与深拷贝

    一、可变对象与不可变对象

    见Python变量

    二、copy模块

    对象拷贝是指在内存中创建新的对象,产生新的内存地址。

    • 浅拷贝只拷贝最外层对象,深拷贝还会递归拷贝内层对象。
    • 无论是浅拷贝还是深拷贝,只拷贝mutable可变对象成为一个新对象,而immutable不可变对象还是原来的那个。
    • 当顶层对象和它的子元素对象全都是immutable不可变对象时,因为没有产生新对象,所以不存在被拷贝。

    1.浅拷贝

    import copy
    copy.copy()
    
      1. 顶层是mutable,子元素全是immutable


      1. 顶层是mutable,子元素部分immutable


      1. 顶层是immutable,子元素全是immutable
      1. 顶层是immutable,子元素部分mutable

    2.深拷贝

    import copy
    copy.deepcopy()
    
      1. 顶层是mutable,子元素全是immutable
      1. 顶层是mutable,子元素部分mutable


      1. 顶层是immutable,子元素全是immutable
      1. 顶层是immutable,子元素部分mutable

    三、其他拷贝方法

    1. 列表的复制

    列表的复制都相当于浅拷贝效果,有以下三种方式:

    • 1.列表的copy()函数
    • 2.list()转换函数
    • 3.列表切片[:]

    2. 元组的复制

    使用分片[:]操作,相当于浅拷贝的效果。

    3. 字典的复制

    同列表类似,可以使用字典的copy()函数或者转换函数dict()。

    4. 集合的复制

    同列表类似,可以使用集合的copy()函数或者转换函数set()。

    相关文章

      网友评论

          本文标题:Python浅拷贝与深拷贝

          本文链接:https://www.haomeiwen.com/subject/iciucctx.html