详解python深浅拷贝区别


Posted in Python onJune 24, 2019

在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。

浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制

深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

深浅拷贝的作用

1,减少内存的使用

2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

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

深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

>>>a = {1: [1,2,3]}>>> b = a.copy()>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})>>> a[1].append(4)>>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深度拷贝需要引入 copy 模块:

>>>import copy>>> c = copy.deepcopy(a)>>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})>>> a[1].append(5)>>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

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

详解python深浅拷贝区别

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

详解python深浅拷贝区别

Python 相关文章推荐
python中关于时间和日期函数的常用计算总结(time和datatime)
Mar 08 Python
Python对象转JSON字符串的方法
Apr 27 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
Python秒算24点实现及原理详解
Jul 29 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
如何用 Python 处理不平衡数据集
Jan 04 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
Python如何telnet到网络设备
Feb 18 Python
pandas计数 value_counts()的使用
Jun 24 #Python
pandas DataFrame 交集并集补集的实现
Jun 24 #Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 #Python
pandas.cut具体使用总结
Jun 24 #Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 #Python
python日期相关操作实例小结
Jun 24 #Python
使用Python Pandas处理亿级数据的方法
Jun 24 #Python
You might like
yii框架无限极分类的实现方法
2017/04/08 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
python使用多线程不断刷新网页的方法
2015/03/31 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
深入解析Python中的线程同步方法
2016/06/14 Python
python 容器总结整理
2017/04/04 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
Hotels.com南非:酒店预订
2017/11/02 全球购物
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
创业大赛策划书
2014/03/01 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
化妆品促销活动总结
2015/05/07 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
护士心得体会范文
2016/01/25 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
关于mysql中string和number的转换问题
2022/06/14 MySQL