首页 > 其他分享 >浅拷贝和深拷贝的区别

浅拷贝和深拷贝的区别

时间:2022-12-28 16:22:36浏览次数:41  
标签:区别 对象 引用 deepcopy 拷贝 copy 赋值

1、Python中对象的赋值都是进行对象引用(内存地址)传递
2、使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用
3、如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝
4、对于非容器类型(如数字、字符串、和其他"原子"类型的对象)没有被拷贝一说
5、如果元祖变量只包含原子类型对象,则不能深拷贝

b = a:赋值引用,a 和 b 都指向同一个对象。

b = a.copy():浅拷贝,a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

b = copy.deepcopy(a):深度拷贝,a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。


a = [1, 2, 3, 4, ['a', 'b']] #原始对象

b = a                       #赋值,传对象的引用
c = copy.copy(a)            #对象拷贝,浅拷贝
d = copy.deepcopy(a)        #对象拷贝,深拷贝

a.append(5)                 #修改对象a
a[4].append('c')            #修改对象a中的['a', 'b']数组对象

a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]

标签:区别,对象,引用,deepcopy,拷贝,copy,赋值
From: https://www.cnblogs.com/lc-blogs/p/17010392.html

相关文章

  • 学习笔记282—SD与SEM有区别吗
    SD是标准偏差,反映的是样本变量值的离散程度。SEM是标准误差,反映的是样本均数之间的变异。SD为样本标准差,根据标准差SD能反映变量值的离散程度。正负值就是在计算好的SD......
  • 外贸网站优化与外贸网页优化的区别
    对于大多数外贸企业和个人站长来说,网页优化是非常重要的,但是说到网站优化,很多人会有一个误区,就是经常把网站优化和搜索引擎优化混为一谈。虽然两者之间有很多重叠的地方,但是......
  • python中resp.json()与json.loads(str)的区别
    resp=resquests.get(url)print(type(resp))#<class'requests.models.Response'>第一行代码使用requests库发送get请求,得到响应数据resp。第二行代码的输......
  • CPU渲染和GPU渲染有什么区别?
    games101作业里面第一个是使用CPU算法渲染图形生成了一张光栅化图像。百度了一下才知道,原来GPU出现的挺晚的,1999年,NVIDIA(英伟达)发明了GPU。那么之前呢?难道都是使用CPU处......
  • 工业以太网交换机和普通商用交换机的区别
    工业交换机宽温工作、抗干扰能力强、防雾、抗震性能强。那么,你知道工业交换机和商用(普通)交换机的区别吗?接下来飞畅科技就来为大家详细介绍下工业以太网交换机和普通商用交换......
  • 什么是工控主板?工控主板和商业主板的区别有哪些?
    在我们的生活中,时常会听到工控主板和商业主板两个词,但是你们知道工控主板和商业主板有哪些区别吗?两者是怎么选择的?为什么工控主板的价格比商业主板价格高?下面跟随沐渥科技一......
  • 关于left join、right join和join 区别
    leftjoin以表一为主查询结果为表一全部数据和与表二有关联的交集数据 select*from表一leftjoin表二on表一条件=表二条件rightjoin以表二为主查询结......
  • 区别
    go语言中的“var”与“:=”有什么区别:=这个符号直接取代了var和type,这种形式叫做简短声明。不过它有一个限制,那就是它只能用在函数内部;在函数外部使用则会无法编译通过,......
  • Spring中Bean的命名问题及ref和idref之间的区别
    一直在用Spring,其实对其了解甚少,刚去了解了一下Spring中Bean的命名问题以及ref和idref之间的区别,略作记录,以备后查。 Spring中Bean的命名1、每个Bean可以有一个id属性,并可......
  • java stream map和 flatmap区别
    区别:mapmapper返回R,flatMapmapper返回Stream<R>官网解释1,<R> Stream<R>flatMap(Function<?super T,?extends Stream<?extendsR>> mapper) Returnsastream......