详解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中函数总结之装饰器闭包详解
Jun 12 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
基于python的七种经典排序算法(推荐)
Dec 08 Python
python入门教程之识别验证码
Mar 04 Python
Python多线程原理与用法详解
Aug 20 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
解决pyttsx3无法封装的问题
Dec 24 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
用Python制作音乐海报
Jan 26 Python
Python实现单例模式的5种方法
Jun 15 Python
实例详解Python的进程,线程和协程
Mar 13 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
PHP获取文件相对路径的方法
2015/02/26 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
异步加载script的代码
2011/01/12 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
JavaScript中Function详解
2015/02/27 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python实现购物车功能的方法分析
2017/11/10 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
房地产融资计划书
2014/01/10 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
电子商务实训报告总结
2014/11/05 职场文书
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android