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获取图片颜色信息的方法
Mar 18 Python
python文件与目录操作实例详解
Feb 22 Python
Python selenium 三种等待方式详解(必会)
Sep 15 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
python3处理含有中文的url方法
May 10 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
Python双向循环链表实现方法分析
Jul 30 Python
python 实现在tkinter中动态显示label图片的方法
Jun 13 Python
用python3读取python2的pickle数据方式
Dec 25 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
python实现一个简单RPC框架的示例
Oct 28 Python
python pyhs2 的安装操作
Apr 07 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之Smarty入门
2007/01/04 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
phpcms中的评论样式修改方法
2016/10/21 PHP
php json相关函数用法示例
2017/03/28 PHP
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
jquery图片放大镜效果
2017/06/23 jQuery
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
vue2.0移除或更改的一些东西(移除index key)
2017/08/28 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
Python while 循环使用的简单实例
2016/06/08 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
python实现用户名密码校验
2020/03/18 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
毕业生见习报告总结
2014/11/08 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python