详解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 zip文件 压缩
Dec 24 Python
python合并文本文件示例
Feb 07 Python
Python Web开发模板引擎优缺点总结
May 06 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
解决Django Static内容不能加载显示的问题
Jul 28 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
浅析Python requests 模块
Oct 09 Python
Python 使用office365邮箱的示例
Oct 29 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 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
超级简单的发送邮件程序
2006/10/09 PHP
php实现对象克隆的方法
2015/06/20 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
python使用PyGame模块播放声音的方法
2015/05/20 Python
手把手教你python实现SVM算法
2017/12/27 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
基于python实现KNN分类算法
2020/04/23 Python
详解Python 函数如何重载?
2019/04/23 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python读文件的步骤
2019/10/08 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
python3将变量输入的简单实例
2020/08/19 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
期末总结的个人自我评价
2013/11/02 职场文书
给领导的感谢信范文
2015/01/23 职场文书
会议开幕词
2015/01/28 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
中学音乐课教学反思
2016/02/18 职场文书
为什么不建议在go项目中使用init()
2021/04/12 Golang
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP