详解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 除法小技巧
Sep 06 Python
Python 列表list使用介绍
Nov 30 Python
Python json模块使用实例
Apr 11 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python中字符串对齐方法介绍
May 21 Python
python实现文件快照加密保护的方法
Jun 30 Python
Python生成密码库功能示例
May 23 Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
Python+tkinter实现高清图片保存
Mar 13 Python
python神经网络ResNet50模型
May 06 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 操作符与控制结构
2012/03/07 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
js 匿名调用实现代码
2009/06/19 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
理解javascript封装
2016/02/23 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
关于python多重赋值的小问题
2019/04/17 Python
对PyQt5的输入对话框使用(QInputDialog)详解
2019/06/25 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
不拖欠农民工工资承诺书
2014/03/31 职场文书
工作检讨书怎么写
2014/10/10 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js