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 拷贝对象(深拷贝deepcopy与浅拷贝copy)
Sep 06 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
Python进阶之递归函数的用法及其示例
Jan 31 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
python 返回列表中某个值的索引方法
Nov 07 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
postman模拟访问具有Session的post请求方法
Jul 15 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
keras得到每层的系数方式
Jun 15 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 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
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python3.4实现邮件发送功能
2018/05/28 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
python中selenium库的基本使用详解
2020/07/31 Python
CSS3教程(2):网页边框半径和网页圆角
2009/04/02 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
十八届三中全会学习方案
2014/02/16 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
公司员工管理制度
2015/08/04 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
Go语言怎么使用变长参数函数
2022/07/15 Golang