广告
返回顶部
首页 > 资讯 > 后端开发 > Python >浅拷贝和深拷贝的区别
  • 766
分享到

浅拷贝和深拷贝的区别

python 2023-09-21 17:09:15 766人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。 2、深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任

浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。
2、深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。

区别:可变对象就不会这样会修改值后另存到一个新的地址上,而是直接再原对象的地址上把值给改变了,这个对象依然执行这个地址

本质区别:可变对象修改了值,不会新建一个内存地址的对象,不可变对象如果修改了值,及时复制了一份新的内存地址,原始地址的值不会被改变。

不可变元素包含:int,float,complex,long,str,unicode,tuple

可变原生:list

例子:

import copy
a = [1, 2, 3, 4, ['a', 'b']]
b = a #赋值,传对象的引用
c = copy.copy(a) #浅拷贝,对象拷贝
d = copy.deepcopy(a) #深拷贝,对象拷贝

a.append(5) #修改对象a,列表末尾添加数字5
a[4].append('c') #修改对象a中的列表['a', 'b']

print 'a= ', a
print 'b= ', b
print 'c= ', c
print 'd= ', d

输出结果:
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']] #深拷贝,原始对象的值发生任何变化,深拷贝新的对象内存地址不会发生任何变化

来源地址:https://blog.csdn.net/m0_73770538/article/details/126898545

--结束END--

本文标题: 浅拷贝和深拷贝的区别

本文链接: https://www.lsjlt.com/news/414316.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅拷贝和深拷贝的区别
    浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。 2、深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任...
    99+
    2023-09-21
    python
  • Python深拷贝和浅拷贝有什么区别
    这篇“Python深拷贝和浅拷贝有什么区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python深拷贝和浅拷贝有什么区别...
    99+
    2023-07-02
  • 浅拷贝&深拷贝
    浅拷贝新的对象指向原来对象的地址 深拷贝新的对象中,原来是可变对象,会新复制一份值指向新的地址[11,22,33]若原来的对象里含有可变对象,里面的这个可变对象也会指向新的地址['qwer', 123, [44,55]] 参考:https...
    99+
    2023-01-30
  • javascript深拷贝和浅拷贝的区别有哪些
    这篇文章主要介绍“javascript深拷贝和浅拷贝的区别有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript深拷贝和浅拷贝的区别有哪些”文章能...
    99+
    2022-10-19
  • python浅拷贝和深拷贝
    python中的赋值是按引用来传递的,如果不是赋值而是拷贝,那就需要用到copy模块了,这就不得不谈浅拷贝和深拷贝了。   浅拷贝copy()   #!/usr/bin/python  import copy  class MyClass:...
    99+
    2023-01-31
    和深 python
  • 浅析C++浅拷贝与深拷贝的联系和区别
    文章简述 c++中构造函数分为三类:无参构造、带参构造和拷贝构造,其中拷贝构造可分为默认拷贝(浅拷贝)、深拷贝,在程序中,这里我们主要讲浅拷贝和深拷贝的联系和区别。 首先,我们要明白...
    99+
    2022-11-13
  • python 中赋值,深拷贝,浅拷贝的区别
    目录一、赋值实例二、浅拷贝实例三、深拷贝实例赋值:其实就是对象的引用(相当于取别名)。浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象,会引用子对象。深拷贝(deepcopy...
    99+
    2022-11-13
  • php中深拷贝和浅拷贝有哪些区别
    本篇内容介绍了“php中深拷贝和浅拷贝有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP中深拷贝和浅拷贝的区别:1、深拷贝赋值时...
    99+
    2023-06-29
  • Java中深拷贝,浅拷贝与引用拷贝的区别详解
    目录引用拷贝浅拷贝深拷贝小结引用拷贝 引用拷贝: 引用拷贝不会在堆上创建一个新的对象,只 会在栈上生成一个新的引用地址,最终指向依然是堆上的同一个对象。 //实体类 public c...
    99+
    2022-11-13
  • 浅拷贝与深拷贝
       名词解释 1.对象:被分配的一块内存,存储其所代表的值 2.引用:是自动形成的从变量到对象的指针 3.注意:类型(int类型,long类型(python3已去除long类型,只剩下int类型的数据))属于对象,不是变量 4.不可变...
    99+
    2023-01-30
  • python深拷贝浅拷贝
    python深拷贝和浅拷贝问题:   什么是深拷贝?     (个人理解)深拷贝就是将原有的数据一模一样的拷贝一份,然后存到另一个地址中,而不是引用地址   什么是浅拷贝?     (个人理解)就是引用地址 (1)用等于号的拷贝都属于浅拷...
    99+
    2023-01-30
    python
  • js中深拷贝和浅拷贝的区别有哪些
    这篇文章主要介绍js中深拷贝和浅拷贝的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!javascript是一种什么语言javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对安全性并广...
    99+
    2023-06-14
  • Python中浅拷贝和深拷贝的区别总结与
    单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) # 内存地址相同 a = [1,2] # 可变数据类型 copy_a ...
    99+
    2023-01-30
    区别 和深 Python
  • php中深拷贝和浅拷贝的区别是什么
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php中深拷贝和浅拷贝的区别是什么先说一下深拷贝和浅拷贝通俗理解深拷贝:赋值时值完全复制,完全的copy,对其中一个作出改变,不会影响另一个浅拷贝:赋值时,引用赋值,...
    99+
    2018-03-25
    PHP
  • JavaScript中浅拷贝和深拷贝的区别是什么
    本篇文章为大家展示了JavaScript中浅拷贝和深拷贝的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言1. 基础数据类型: undefined、bo...
    99+
    2022-10-19
  • python中深拷贝和浅拷贝的区别是什么
    python中深拷贝和浅拷贝的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。先深拷贝和浅拷贝都是对象的拷贝,都会生成一个看起来相同的对象,他们本质的区别是拷贝出来的对...
    99+
    2023-06-19
  • 浅谈JavaScript浅拷贝和深拷贝
    目录一、直接赋值二、浅拷贝三、深拷贝1. JSON对象的方式2. 递归复制网上关于这个话题,讨论有很多了,根据各路情况我自己整理了一下,最后还是能接近完美的实现深拷贝,欢迎大家讨论。...
    99+
    2022-11-12
  • Java深拷贝与浅拷贝的区别是什么
    这篇文章主要介绍“Java深拷贝与浅拷贝的区别是什么”,在日常操作中,相信很多人在Java深拷贝与浅拷贝的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java深拷...
    99+
    2022-10-19
  • C++深拷贝与浅拷贝的区别及应用
    浅拷贝 只是对指针的拷贝,拷贝后两个指针指向同一个内存空间; 深拷贝 对指针指向的内容进行拷贝(重新分配内存),经深拷贝后的指针是指向不同地址的指针; 因此浅拷贝释放内存的时候很...
    99+
    2022-11-12
  • Python中深拷贝与浅拷贝的区别介绍
    首先,我们知道 Python 中有6个标准的数据类型,他们又分为可以变和不可变。不可变:Number(数字)、String(字符串)、Tuple(元组)。可以变:List(列表)、D...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作