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解惑之True和False详解
Apr 24 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
Python处理中文标点符号大集合
May 14 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
利用python求积分的实例
Jul 03 Python
python获取Linux发行版名称
Aug 30 Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 Python
Django Serializer HiddenField隐藏字段实例
Mar 31 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
Python实现给PDF添加水印的方法
Jan 25 Python
使用Python获取字典键对应值的方法
Apr 26 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
前端开发必知的15个jQuery小技巧
2017/01/22 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
python和C语言混合编程实例
2014/06/04 Python
Python单链表的简单实现方法
2014/09/23 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
python查询mysql,返回json的实例
2018/03/26 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
军事理论课感想
2015/08/11 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
Python之matplotlib绘制饼图
2022/04/13 Python
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers
Django框架模板用法详解
2022/06/10 Python