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逐行读取文件内容的三种方法
Jan 20 Python
Python过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
python脚本生成caffe train_list.txt的方法
Apr 27 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
python如何基于redis实现ip代理池
Jan 17 Python
python能做哪方面的工作
Jun 15 Python
Python字典和列表性能之间的比较
Jun 07 Python
python 管理系统实现mysql交互的示例代码
Dec 06 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 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
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
php数组键值用法实例分析
2015/02/27 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
js电信网通双线自动选择技巧
2008/11/18 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
python 解析html之BeautifulSoup
2009/07/07 Python
下载给定网页上图片的方法
2014/02/18 Python
Django中使用group_by的方法
2015/05/26 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
Python如何发布程序的详细教程
2018/10/09 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
工作时间上网检讨书
2014/02/03 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
人力资源总监工作说明
2014/03/03 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
工作会议简报
2015/07/20 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL