详解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下Fabric的简单部署方法
Jul 14 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
python aiohttp的使用详解
Jun 20 Python
python自定义函数实现最大值的输出方法
Jul 09 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
Jul 01 Python
python 实现一个图形界面的汇率计算器
Nov 09 Python
详解python3类型注释annotations实用案例
Jan 20 Python
python 如何用terminal输入参数
May 25 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 insert语法详解
2008/06/07 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
Django多数据库联用实现方法解析
2020/11/12 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
小学感恩教育活动总结
2014/07/07 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
党支部季度考核意见
2015/06/02 职场文书
军训通讯稿范文
2015/07/18 职场文书
小学语文教学随笔
2015/08/14 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
mysql中DCL常用的用户和权限控制
2022/03/31 MySQL
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技