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搭建简易服务器分析与实现
Dec 15 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python 读取文件并把矩阵转成numpy的两种方法
Feb 12 Python
Python 硬币兑换问题
Jul 29 Python
python实现人工智能Ai抠图功能
Sep 05 Python
python中return的返回和执行实例
Dec 24 Python
TensorFlow加载模型时出错的解决方式
Feb 06 Python
Python第三方包之DingDingBot钉钉机器人
Apr 09 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
python UIAutomator2使用超详细教程
Feb 19 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
漂亮但不安全的CTB
2006/10/09 PHP
PHP文件上传类实例详解
2016/04/08 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
python中cPickle用法例子分享
2014/01/03 Python
python time模块用法实例详解
2014/09/11 Python
python相似模块用例
2016/03/04 Python
Python操作csv文件实例详解
2017/07/31 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python操作json的方法实例分析
2018/12/06 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
机电专业毕业生求职信
2013/10/27 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
项目合作意向书范本
2014/04/01 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2014年团队工作总结
2014/11/24 职场文书
创业计划书之干洗店
2019/09/10 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL