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之??碌某?? target=
Sep 12 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
常见python正则用法的简单实例
Jun 21 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
pycharm设置注释颜色的方法
May 23 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
Jun 20 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Python3爬虫带上cookie的实例代码
Jul 28 Python
详解python变量与数据类型
Aug 25 Python
Python Django ORM连表正反操作技巧
Jun 13 Python
python四种出行路线规划的实现
Jun 23 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
js断点调试经验分享
2017/12/08 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python3实现点餐系统
2019/01/24 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
品质口号大全
2014/06/17 职场文书
班主任经验交流材料
2014/12/16 职场文书
总经理岗位职责范本
2015/04/01 职场文书
行政前台岗位职责
2015/04/16 职场文书
导游词之湖州-太湖
2019/10/11 职场文书