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中处理字符串之islower()方法的使用简介
May 19 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
Python多线程原理与用法详解
Aug 20 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
在python里面运用多继承方法详解
Jul 01 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 Python
解决Mac下使用python的坑
Aug 13 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
Mar 29 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/04 星际争霸
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
深入认识JavaScript中的函数
2007/01/22 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python向日志输出中添加上下文信息
2017/05/24 Python
Django自定义认证方式用法示例
2017/06/23 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Python中创建二维数组
2018/10/17 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
采购员的工作职责
2013/12/26 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
毕业设计致谢语
2015/05/14 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS