详解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 正则表达式 概述及常用字符
May 04 Python
为python设置socket代理的方法
Jan 14 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
Python安装第三方库的3种方法
Jun 21 Python
python实现ping的方法
Jul 06 Python
老生常谈python中的重载
Nov 11 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
Python urlencode和unquote函数使用实例解析
Mar 31 Python
python实现简单的井字棋游戏(gui界面)
Jan 22 Python
Python进阶学习之带你探寻Python类的鼻祖-元类
May 08 Python
Django使用echarts进行可视化展示的实践
Jun 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
用PHP解决的一个栈的面试题
2014/07/02 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
php简单截取字符串代码示例
2016/10/19 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
xtree.js 代码
2007/03/13 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
vue keep-alive的简单总结
2021/01/25 Vue.js
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
Python基于PycURL实现POST的方法
2015/07/25 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
Python各种扩展名区别点整理
2020/02/27 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
web页面录屏实现
2019/02/12 HTML / CSS
Java文件和目录(IO)操作
2014/08/26 面试题
农田水利实习自我鉴定
2013/09/19 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
获奖感言一句话
2015/07/31 职场文书