详解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在hadoop上跑起来
Jan 27 Python
python 回调函数和回调方法的实现分析
Mar 23 Python
Python代码解决RenderView窗口not found问题
Aug 28 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
Python实现按学生年龄排序的实际问题详解
Aug 29 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
Django之无名分组和有名分组的实现
Apr 16 Python
python3.x 生成3维随机数组实例
Nov 28 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
Python爬虫实战之爬取携程评论
Jun 02 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/11/16 PHP
php 常用字符串函数总结
2008/03/15 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python 递归函数详解及实例
2016/12/27 Python
简单了解Django模板的使用
2017/12/20 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
深入学习python多线程与GIL
2019/08/26 Python
python文件排序的方法总结
2020/09/13 Python
python实现简单文件读写函数
2021/02/25 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
经济管理专业毕业生推荐信
2013/11/11 职场文书
酒店中秋节活动方案
2014/01/31 职场文书
班级文化标语
2014/06/23 职场文书
劳模先进事迹材料
2014/12/24 职场文书
小学教研工作总结2015
2015/05/13 职场文书
科技馆观后感
2015/06/08 职场文书
西游记读书笔记
2015/06/25 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书