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实现dict版图遍历示例
Feb 19 Python
Python中正则表达式的详细教程
Apr 30 Python
python实现FTP服务器服务的方法
Apr 11 Python
python中import reload __import__的区别详解
Oct 16 Python
Python机器学习logistic回归代码解析
Jan 17 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
python入门:这篇文章带你直接学会python
Sep 14 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
django 基于中间件实现限制ip频繁访问过程详解
Jul 30 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 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
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
JavaScript 原型继承
2011/12/26 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
python插入排序算法的实现代码
2013/11/21 Python
python结合API实现即时天气信息
2016/01/19 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python pandas生成时间列表
2019/06/29 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
中科前程Java笔试题
2016/11/20 面试题
学习心得体会
2014/01/01 职场文书
应用英语专业自荐信
2014/01/26 职场文书
党员一帮一活动总结
2014/07/08 职场文书
端午节活动总结
2014/08/26 职场文书
MySQL开启事务的方式
2021/06/26 MySQL
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android