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中操作文件之read()方法的使用教程
May 24 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
Python自动发邮件脚本
Mar 31 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
python实现ip代理池功能示例
Jul 05 Python
用Python绘制漫步图实例讲解
Feb 26 Python
python对文件的操作方法汇总
Feb 28 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
Django正则URL匹配实现流程解析
Nov 13 Python
tensorflow2.0教程之Keras快速入门
Feb 20 Python
python井字棋游戏实现人机对战
Apr 28 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
laravel-admin的多级联动方法
2019/09/30 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
实时获取Python的print输出流方法
2019/01/07 Python
python中while和for的区别总结
2019/06/28 Python
详解python中的index函数用法
2019/08/06 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
安装PyInstaller失败问题解决
2019/12/14 Python
python pip如何手动安装二进制包
2020/09/30 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
网络体系结构及协议的定义
2014/03/13 面试题
家长给老师的道歉信
2014/01/13 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
机关保密承诺书
2014/06/03 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
师德师风培训感言
2015/08/03 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android
如何解决php-fpm启动不了问题
2021/11/17 PHP