Python浅拷贝与深拷贝

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()。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 宽于待人,严于律己。 你在某些维度层级比别人角度更高的时候,理解他们所处维度,用他们习惯维度思维说服他们就好。(你...
    李冉升阅读 2,372评论 0 0
  • 《鹊桥仙》 风吹叶落,径林泽翠,景色谁人知道。风流一度惹芳菲,簇枝闹,春晖正好。 清波泛皱,落英浮水,蝶戏花丛微恼...
    隐之人阅读 2,806评论 0 0
  • ——了空居士 采气、行气、养气、发气这几个名词练功者都很熟悉,也都懂得运...
    明己阅读 7,655评论 0 2
  • 安装和运行MySQL数据库(MariaDB) contos 平台 1.安装和运行 2.使用用客户端工工具连接MyS...
    ham731阅读 1,787评论 0 0

友情链接更多精彩内容