Python浅复制中对象生存周期实例分析


Posted in Python onApril 02, 2018

本文实例讲述了Python浅复制中对象生存周期。分享给大家供大家参考,具体如下:

Python的浅复制以及深复制我了解的并不多,我不清楚shutil中的copy1和copy2是不是算是浅复制和深复制?这两个操作,一个是文件属性重建,还有一个是文件属性不变。不知道对象的复制是否可以以此类比?

在复制之前,为了能够观看一下GC的执行,定义一个特殊的类和对象。测试代码如下:

class Demo:
    def __del__(self):
       print("Removing{0}".format(id(self)))
x = Demo()
del x

程序执行结果如下:

E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08>pythoncopy1.py
Removing1772226785520

接下来构造浅复制的例子:

>>>obj_list1 = [Demo(),Demo()]
>>>obj_list2 = obj_list1[:]
>>> del obj_list1
>>> del obj_list2
Removing1902510644416
Removing1902510644360

从上面的结果看,第一次del并没有触发对象销毁的方法执行。这是在交互界面中进行调试出现的结果,如果代码是写到一个具体的文件中,那么程序执行的结果有可能不同。当所有的语句都写到同一个文件中的时候,文件中的对象作用域会有轻微的调整。这是值得我们注意的。

另一种常见的浅复制方法:

>>> o1 =o2 = Demo()
>>> del o1
>>> del o2
Removing1902510136568

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中的生成器和yield详细介绍
Jan 09 Python
Python写的Tkinter程序屏幕居中方法
Mar 10 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
python在文本开头插入一行的实例
May 02 Python
python实现矩阵打印
Mar 02 Python
python抓取搜狗微信公众号文章
Apr 01 Python
Python字符串的常见操作实例小结
Apr 08 Python
Python基础知识点 初识Python.md
May 14 Python
Python Django基础二之URL路由系统
Jul 18 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
python爬虫-模拟微博登录功能
Sep 12 Python
python基础教程项目五之虚拟茶话会
Apr 02 #Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 #Python
python基础教程项目四之新闻聚合
Apr 02 #Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 #Python
python基础教程项目三之万能的XML
Apr 02 #Python
python opencv检测目标颜色的实例讲解
Apr 02 #Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 #Python
You might like
php print EOF实现方法
2009/05/21 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
javascript 简练的几个函数
2009/08/29 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
js中精确计算加法和减法示例
2014/03/28 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
Python格式化css文件的方法
2015/03/10 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
python numpy 反转 reverse示例
2019/12/04 Python
Python如何获取文件指定行的内容
2020/05/27 Python
Python实现微信表情包炸群功能
2021/01/28 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
后勤人员自我评价怎么写
2013/09/19 职场文书
高中运动会入场词
2014/02/14 职场文书
节约用水演讲稿
2014/05/21 职场文书
物理学专业自荐信
2014/06/11 职场文书
小学开学标语
2014/07/01 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js