Python中的深拷贝浅拷贝

这篇具有很好参考价值的文章主要介绍了Python中的深拷贝浅拷贝。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是浅拷贝,什么是深拷贝?

一、浅拷贝

浅拷贝就是:拷贝了引用,并没有拷贝内容,和在Linux中的硬链接有些类似,在python中,使用=赋值的动作就是一个浅拷贝
浅拷贝中的新旧对象,共用一个内存地址,当操作新旧对象中的任意对象,发生修改,内存地址中的值发生改变,则新旧对象都会发生变化;如果新旧对象只是被重新赋值,这个动作则不会影响其他对象的值;

二、深拷贝

深拷贝是对于一个对象所有层次的拷贝,重新开辟内存地址。
#使用copy模块
#深拷贝,重新开辟内存,并内容独立
e = copy.deepcopy©
#深拷贝,重新开辟内存,但是新内容里面仍保存原来的引用
f = copy.copy©

三、深浅拷贝对比

import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]

d = c #直接赋值,浅拷贝
print("c的内存地址为:%s"%id(c))
print("d的内存地址为:%s"%id(d))

#使用copy模块
#深拷贝,重新开辟内存,并内容独立
e = copy.deepcopy(c)
#深拷贝,重新开辟内存,但是新内容里面仍保存原来的引用
f = copy.copy(c)
#打印e,f的地址
print("e的内存地址为:%s"%id(e))
print("f的内存地址为:%s"%id(f))

#改变a的值
a.append(44)

#打印a,b,c,d,e,f
print("a = %s"%a)
print("b = %s"%b)
print("c = %s"%c)
print("d = %s"%d)
print("e = %s"%e)
print("f = %s" % f)

以上内容来自网络,根据自己的理解的表达,如果不对,请联系更正~文章来源地址https://www.toymoban.com/news/detail-700187.html

到了这里,关于Python中的深拷贝浅拷贝的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文道破Java中的深拷贝,浅拷贝,零拷贝

    在Java编写代码中,对象的拷贝是一个常见的操作。根据拷贝的层次和方式不同,可以分为深拷贝、浅拷贝和零拷贝。本篇文章我们将详细介绍这三种拷贝方式的概念、实现方法以及使用场景,方便大佬学习及面试。 深拷贝是一种创建对象副本的方法,其中新对象与原始对象

    2024年02月04日
    浏览(37)
  • C++中的深拷贝和浅拷贝介绍

    对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如: b 和 obj2 都是以拷贝的方式初始化的,具体来说,就是将 a 和 obj1 所在内存中的数据按照二进制位(Bit)复制到 b 和 obj2 所在的内存,这种默认的拷贝行为就是浅拷贝,这和调用 me

    2024年02月07日
    浏览(50)
  • JS的深拷贝和浅拷贝

    ‍本文作者是360奇舞团开发工程师 在讨论深拷贝和浅拷贝之前,先来了解下Js基本数据和引用数据类型的存储问题 基本数据类型:Number String Boolean Undefined Symbol Null 引用类型 :Object,function,Array等 基本数据类型的值存放在栈中,在栈中存放的是对应的值;引用类型对应的值存

    2024年02月09日
    浏览(39)
  • 浅析深浅拷贝

           我们在对对象进行复制时就用到深浅拷贝。 一、普通复制 控制台打印结果:               之所以我们要用到拷贝,是因为直接赋值的复制可能不能满足我们的需求。向上面代码所展示的,我们复制代码时,复制到的是 地址 ,所以对 复制体修改实际修改的是原对

    2024年02月12日
    浏览(33)
  • JavaScript深浅拷贝

    1. js浅拷贝只是创建了一个新的对象,复制了原有对象的基本类型的值。 手写实现  2. 深拷贝的原理和实现 将一个对象从内存中完整地拷贝出来一份给目标对象,并从堆内存中开辟一个全新的空间存放新的对象,且新对象的修改并不会改变原对象,二者实现真正的分离

    2024年01月18日
    浏览(41)
  • 深浅拷贝,温故知新

    1.1、概念 对象的深拷贝是指其属性与其拷贝的源对象的属性不共享相同的引用(指向相同的底层值)的副本。 因此,当你更改源或副本时,可以确保不会导致其他对象也发生更改;也就是说,你不会无意中对源或副本造成意料之外的更改。 在深拷贝中,源和副本是完全独立

    2024年02月03日
    浏览(46)
  • 深浅拷贝、函数

    普通函数 1、函数的定义与特性 2、函数的创建 3、函数的参数 4、函数的返回值 5、可变与不可变数据类型 6、作用域 递归函数 匿名函数 高级函数 装饰器 1、闭包 2、装饰器 3、装饰器之登录练习 列表生成式 1、列表推导式的概念 2、基本的使用方式 3、在循环的过程中使用i

    2024年02月03日
    浏览(34)
  • 认识Object类和深浅拷贝

    本文介绍了Object类以及Object类部分方法,toString方法,equals和hashCode方法(重写前和重写后的对比),getClass方法,clone方法,以及拷贝新对象时会出现的深浅拷贝, 内容较长,耗时一天,建议收藏后观看~ Object类是Java默认提供的一个类。而这个类是Java里所有类的顶级父类,即在继承体系下

    2023年04月20日
    浏览(35)
  • C# List 复制之深浅拷贝

    声明类 执行上述方法, 修改list1 中的属性值, 发现list2 的属性值会跟着变化, list3 的属性值不发生变化; 由于进行的是浅拷贝,所以直接将list1的内容复制给了list2,虽然list1和list2所在的地址不一样,但是两个list存储的对象仍然是相同的(因为把list1复制到list2时,浅拷贝复制的

    2024年02月07日
    浏览(58)
  • 深浅拷贝,类型检测及继承面试题

    基本类型:基本类型的值存在栈内存中 引用类型: 引用类型的地址存储在栈内存中,他的值存储在堆内存中,通过指针(地址)连接 基本类型:基本类型拷贝的是值 引用类型:引用类型拷贝的是变量的地址,会造成数据共享问题 基本类型: 基本类型传递的是值 引用类型:

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包