在很多面试题中都会问到浅拷贝跟深度拷贝的区别,前几天一个朋友也问到了我浅拷贝跟深度拷贝到底有什么区别,这里就简单举栗子讲一下两者的区别。

浅拷贝(copy()):拷贝父对象,不会拷贝对象的内部的子对象

深拷贝( copy.deepcopy()):完全拷贝父对象跟子对象

import copyl = [1, 2, ['a', 'b']]
s_copy = l.copy()  # 浅拷贝
d_copy = copy.deepcopy(l)  # 深拷贝
l.append(3)
l[2].append('c')print(l)  # [1, 2, ['a', 'b', 'c'], 3]
print(s_copy)  # [1, 2, ['a', 'b', 'c']]
print(d_copy)  # [1, 2, ['a', 'b']]

通过上面的输出结果可以很好的看到,深拷贝是直接复制了所有的父对象跟子对象,原来的不管怎么变都跟他没关系,浅拷贝只是复制了当前的父对象,如果子对象发生变化,浅拷贝也是会跟着改变的。

深入解析:

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

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

转载于:https://www.cnblogs.com/zzqit/p/10229059.html

python中浅拷贝和深度拷贝的区别相关推荐

  1. 彻底理解Python中浅拷贝和深拷贝的区别

    目录 前言 1. 浅拷贝和深拷贝的概念 2. is和==的区别 3. 赋值操作 4. copy模块里面的copy()方法 5. copy模块里面的deepcopy()方法 6.字典自带的copy方法 ...

  2. Python 直接赋值、浅拷贝和深度拷贝全解析

    直接赋值:其实就是对象的引用(别名,其实就是一个人今天叫张三 明天叫张狗子的意思). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 de ...

  3. 部分仍在编辑文章 - Python基础专题 - 深度解析python中的赋值与拷贝

    深度解析python中的赋值与拷贝 jcLee95 的 CSDN 博客:https://blog.csdn.net/qq_28550263?spm=1011.2124.3001.5343 邮箱 :29 ...

  4. python中浅拷贝和深拷贝的区别_Python中浅拷贝和深拷贝的区别

    Python中浅拷贝和深拷贝的区别 浅拷贝和深拷贝示意图 如上图,简单点说 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝 ...

  5. Python中浅拷贝和深拷贝的理解与研究

    Python中浅拷贝和深拷贝的理解与研究 单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) ...

  6. Python中浅拷贝和深拷贝的理解与研究 1

    Python中浅拷贝和深拷贝的理解与研究 单层浅拷贝 import copy a = 1 # 不可变数据类型 copy_a = copy.copy(a) print(id(a),id(copy_a)) ...

  7. Python中爬虫框架或模块的区别

    Python中爬虫框架或模块的区别,我们在Python的学习过程中,需要不断的总结知识点,这样我们才能进步的更快一些. (1)爬虫框架或模块 Python自带爬虫模块:urllib.urllib2; ...

  8. Python中值传递和引用传递区别

    原文:http://blog.csdn.net/xuqiaobo/article/details/72236539 举例,函数参数如果是dic,都不需要返回值,原值就被改变了 def aa(dic): ...

  9. Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...

    Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象 ...

最新文章

  1. HB限时领Deponia: The Complete Journey
  2. python svm
  3. 如何查看linux函数对应的库文件
  4. The MIT License (MIT)
  5. Java SE(2)
  6. 《C和C++代码精粹》——1.8 标准流
  7. 补充上次的将父类作为方法的返回类型
  8. 怎么给国外的客户开Invoice?
  9. python数字图像处理(四) 频率域滤波
  10. 熊猫python_Python库-------熊猫
  11. J2ME开发环境配置(MyEclipse插件+WTK+jdk)
  12. Unicode 属性类
  13. halcon视觉框架源码_图像处理与机器视觉初学者学习路线
  14. 3dmax 渲染关机 脚本_3DMax渲染完自动关机设置
  15. Linux_zlog日志系统的安装与使用
  16. 用积分法求椭圆周长matlab,MATLAB计算积分
  17. 微单相机和单反相机的区别?摄影入门第一课
  18. C语言实现平衡二叉树
  19. python编程练习:爬虫爬取全国大江大河实时水情
  20. 今日头条抖音小程序开发文档

热门文章

  1. sp | sp格式的空间矢量对象及其函数方法简介
  2. vba下拉框实现记忆功能_VBA | 这个二级下拉菜单挺有趣!
  3. 绝对干货!纯用HTML+CSS+JS 编写的计算器应用
  4. 微信小程序怎么扩展服务器,小程序服务器可扩展的配置方案
  5. java异常处理封装_Java统一异常处理(配置文件集中化定义)
  6. 微软关闭音乐服务器,微软关闭Zune音乐服务 Zune播放器变为MP3
  7. 请求参数 统一 管理 java_Retrofit+Rxjava+okhttp基本操作和统一处理 – R...
  8. 如何接受上级指令_与上级沟通的技巧
  9. ddos攻击数据集_ddos攻击和cc攻击有什么区别?他们2个哪个更厉害?
  10. 服务器运维应该报什么专业,数据中心基础设施运维人员应该掌握哪些专业技能?...