python中_del_还原数据的方法

 更新时间:2020年12月09日 15:04:39   作者:小妮浅浅  
在本篇内容里小编给大家整理了一篇关于python中_del_还原数据的方法,有兴趣的朋友们可以学习下。

在数据存储过多时,我们会选择清除,不过有时候也需要找回一些我们之前删掉的数据。有的小伙伴可能会使用不同的方法分别完成,那么今天小编带来的_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_如何还原数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

    解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)

    这篇文章主要介绍了解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python中的&&及||的实现示例

    python中的&&及||的实现示例

    这篇文章主要介绍了python中的&&及||的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python pandas时序处理相关功能详解

    python pandas时序处理相关功能详解

    这篇文章主要介绍了python pandas时序处理相关功能详解的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python打包exe开机自动启动的实例(windows)

    python打包exe开机自动启动的实例(windows)

    今天小编就为大家分享一篇python打包exe开机自动启动的实例(windows),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python线程threading模块用法详解

    Python线程threading模块用法详解

    这篇文章主要介绍了Python线程threading模块用法,结合实例形式总结分析了Python线程threading模块基本功能、原理、相关函数使用方法与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • pyinstaller打包程序exe踩过的坑

    pyinstaller打包程序exe踩过的坑

    这篇文章主要介绍了pyinstaller打包exe踩过的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • python获得一个月有多少天的方法

    python获得一个月有多少天的方法

    这篇文章主要介绍了python获得一个月有多少天的方法,涉及Python中datetime模块操作日期的相关技巧,需要的朋友可以参考下
    2015-06-06
  • 使用python+pygame实现中秋节动画效果

    使用python+pygame实现中秋节动画效果

    马上就要中秋节了,使用python可以实现中秋节动画效果,包括月亮、兔子和烟花吗?当然是可以的,那该如何实现呢?这篇文章我们主要使用pygame来实现,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-09-09
  • 谈谈python垃圾回收机制

    谈谈python垃圾回收机制

    这篇文章主要介绍了python垃圾回收机制的相关资料,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • python编写简单端口扫描器

    python编写简单端口扫描器

    这篇文章主要为大家详细介绍了python编写简单端口扫描器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09

最新评论