浅谈Python对内存的使用(深浅拷贝)


Posted in Python onJanuary 17, 2018

本文主要研究的是Python对内存的使用(深浅拷贝)的相关问题,具体介绍如下。

浅拷贝就是对引用的拷贝(只拷贝父对象)

深拷贝就是对对象的资源的拷贝

>>> a=[1,2,3,'a','b']
>>> b=a
>>> b
[1, 2, 3, 'a', 'b']
>>> a
[1, 2, 3, 'a', 'b']
>>> id(a)
3021737547592
>>> id(b)
3021737547592
>>> a.append('c')
>>> a
[1, 2, 3, 'a', 'b', 'c']
>>> b
[1, 2, 3, 'a', 'b', 'c']
>>> b.append(4)
>>> b
[1, 2, 3, 'a', 'b', 'c', 4]
>>> a
[1, 2, 3, 'a', 'b', 'c', 4]

从以上操作可以看出:将a赋值给b后,a和b的地址是一样的,无论那个发生变化,另一个都会跟着变化,始终保持相同。

>>> import copy
>>> a=[1,2,3,['a','b','c']]
>>> b=a
>>> c=copy.copy(a)
>>> b
[1, 2, 3, ['a', 'b', 'c']]
>>> c
[1, 2, 3, ['a', 'b', 'c']]
>>> id(a)
3021737548104
>>> id(b)
3021737548104
>>> id(c)
3021737494536    #浅拷贝父对象的地址不一样
>>> a.append('d')
>>> a
[1, 2, 3, ['a', 'b', 'c'], 'd']
>>> b
[1, 2, 3, ['a', 'b', 'c'], 'd']
>>> c
[1, 2, 3, ['a', 'b', 'c']] #a和c的地址不一样,因此a变化,c不变化




>>> id(a[0])
1686357680
>>> id(c[0])
1686357680
>>> id(a[3])
3021737547528
>>> id(c[3])   
3021737547528    #整个父对象所占的空间不一样,但相同的内层数据的所占空间一样
>>> a[3].append('d')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> c
[1, 2, 3, ['a', 'b', 'c', 'd']]#因为内层数据所占空间一样,所以a变化,c跟着变化

以上就是浅拷贝:整个父对象的地址不一样,内层数据的地址相同,操作内层数据的话,一同变化;操作对象为父对象时,拷贝对象不跟着变化。

>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> d=copy.deepcopy(a)
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> id(a)
3021737548104
>>> id(d)
3021737547656  #深拷贝父对象的地址不一样

>>> a.append('e')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd', 'e']
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']#a和d的地址不一样,因此a变化,d不变化
>>> id(a[0])
1686357680
>>> id(d[0])
1686357680
>>> id(a[3])
3021737547528
>>> id(d[3])
3021737493256  #内层数据的地址不一样
>>> a[3].append('x')
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd', 'x'], 'd', 'e']
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']

以上是深拷贝

区别:

浅拷贝与原对象的内层数据地址相同;
深拷贝完全独立开来,与原对象没有任何联系。

总结

以上就是本文关于浅谈Python对内存的使用(深浅拷贝)的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
python安装Scrapy图文教程
Aug 14 Python
使用python 爬虫抓站的一些技巧总结
Jan 10 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
Python模拟登入的N种方式(建议收藏)
May 31 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
python requests库的使用
Jan 06 Python
Python分支结构(switch)操作简介
Jan 17 #Python
python2 与python3的print区别小结
Jan 16 #Python
python正则中最短匹配实现代码
Jan 16 #Python
Python程序员面试题 你必须提前准备!
Jan 16 #Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 #Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 #Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 #Python
You might like
php实现的在线人员函数库
2008/04/09 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
PDO::query讲解
2019/01/29 PHP
mouse_on_title.js
2006/08/25 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
django 解决manage.py migrate无效的问题
2018/05/27 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
python查看模块,对象的函数方法
2018/10/16 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
请介绍一下Ant
2016/07/22 面试题
卫校毕业生自我鉴定
2013/10/31 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
财务审计整改报告
2014/11/06 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书