python中_del_还原数据的方法


Posted in Python onDecember 09, 2020

在数据存储过多时,我们会选择清除,不过有时候也需要找回一些我们之前删掉的数据。有的小伙伴可能会使用不同的方法分别完成,那么今天小编带来的_del_方法既能满足数据的清除,同时也可以把删除的数据重新找回来。考虑到大家对数据还原的方法比较急缺,接下来我们就_del_如何还原数据的方法进行讲解。

_del_在对象销毁时被调用,往往用于清除数据或还原环境等操作,比如在类中的其他普通方法中实现了插入数据库的语句,当对象被销毁时我们需要将数据还原,那么这时可以在__del__方法中实现还原数据库数据的功能。__del__被成为析构方法,同样和C++中的析构方法类似。

下面一个例子的执行顺序可以让大家加深对其的理解。

class Demo:
  def __init__(self):
    print('调用__init__方法')
  def func(self):
    print('这是一个普通的方法')
  def __del__(self):
    print('调用__del__方法')
d = Demo()
d.func()

当d.func()执行后,对象d没有在任何一个地方被继续引用,这时Python的垃圾回收机制会主动回收这个对象,即销毁d,此时自动调用__del__方法,运行结果如下。

调用__init__方法

这是一个普通的方法

调用__del__方法

注意:del 语句在删除变量时,是解除变量对数据的引用,而不是直接删除数据,不是把内存地址删了,只是删除了引用,数据就变为了一个可回收的对象,然后内存会被不定期回收。

不能定义任何名叫 del 的函数或者变量:

>>> def del(a):
 File "<stdin>", line 1
  def del(a):
     ^
SyntaxError: invalid syntax

相信经过本篇对于python中_del_的学习,小伙伴们已经可以独立进行数据的还原了。

python中的del用法扩展

由于python都是引用,而python有GC机制,所以,del语句作用在变量上,而不是数据对象上。

if __name__=='__main__': 
 a=1 # 对象 1 被 变量a引用,对象1的引用计数器为1 
 b=a # 对象1 被变量b引用,对象1的引用计数器加1 
 c=a #1对象1 被变量c引用,对象1的引用计数器加1 
 del a #删除变量a,解除a对1的引用 
 del b #删除变量b,解除b对1的引用 
 print(c) #最终变量c仍然引用1

del删除的是变量,而不是数据。

if __name__=='__main__': 
 li=[1,2,3,4,5] #列表本身不包含数据1,2,3,4,5,而是包含变量:li[0] li[1] li[2] li[3] li[4] 
 first=li[0] #拷贝列表,也不会有数据对象的复制,而是创建新的变量引用 
 del li[0] 
 print(li) #输出[2, 3, 4, 5] 
 print(first) #输出 1

到此这篇关于python中_del_还原数据的方法的文章就介绍到这了,更多相关python中_del_如何还原数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现读取文件最后n行的方法
Feb 23 Python
Python随机数用法实例详解【基于random模块】
Apr 18 Python
Django中login_required装饰器的深入介绍
Nov 24 Python
python处理数据,存进hive表的方法
Jul 04 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python执行精确的小数计算方法
Jan 21 Python
Python 实现微信防撤回功能
Apr 29 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
Feb 18 Python
python输出国际象棋棋盘的实例分享
Nov 26 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
Python+Appium实现自动抢微信红包
May 21 Python
call在Python中改进数列的实例讲解
Dec 09 #Python
python中的对数log函数表示及用法
Dec 09 #Python
如何利用python正则表达式匹配版本信息
Dec 09 #Python
python基于win32api实现键盘输入
Dec 09 #Python
用python实现一个简单的验证码
Dec 09 #Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 #Python
python使用正则表达式匹配txt特定字符串(有换行)
Dec 09 #Python
You might like
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
javascript正则表达式之search()用法实例
2015/01/19 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
2019/08/09 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
使用Python的PEAK来适配协议的教程
2015/04/14 Python
Python中List.count()方法的使用教程
2015/05/20 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
python实现图片转字符小工具
2019/04/30 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Python接收手机短信的代码整理
2020/08/02 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
历史学专业推荐信
2013/11/06 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
消费者投诉书范文
2015/07/02 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL