详解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高效编程技巧
Jan 07 Python
Python类属性的延迟计算
Oct 22 Python
Sublime开发python程序的示例代码
Jan 24 Python
python 拼接文件路径的方法
Oct 23 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
Feb 16 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
pycharm 如何取消连按两下shift出现的全局搜索
Jan 15 Python
Python基础之Socket通信原理
Apr 22 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
Apr 24 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安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
JavaScript面向对象编程
2008/03/02 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
Python判断操作系统类型代码分享
2014/11/22 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
使用Python写一个小游戏
2018/04/02 Python
Python输入二维数组方法
2018/04/13 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Django实现学生管理系统
2019/02/26 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
美国女孩服装购物网站:Justice
2017/03/04 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
自我评价格式
2014/01/06 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
2014年质量工作总结
2014/11/22 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
Jsonp劫持学习
2021/04/01 PHP