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之数据类型总结
Sep 24 Python
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
用Python实现命令行闹钟脚本实例
Sep 05 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
Python中pow()和math.pow()函数用法示例
Feb 11 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
Python使用pylab库实现绘制直方图功能示例
Jun 01 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
Mac安装python3的方法步骤
Aug 09 Python
python模拟实现斗地主发牌
Jan 07 Python
python 如何对logging日志封装
Dec 02 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
js的[defer]和[async]属性
2014/11/24 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
python实现门限回归方式
2020/02/29 Python
keras:model.compile损失函数的用法
2020/07/01 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
Python如何合并多个字典或映射
2020/07/24 Python
python 常见的排序算法实现汇总
2020/08/21 Python
Python request post上传文件常见要点
2020/11/20 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
春季运动会开幕词
2015/01/28 职场文书
“5.12”护士节主持词
2015/07/04 职场文书
高中生军训感言
2015/08/01 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
Java 多线程协作作业之信号同步
2022/05/11 Java/Android