当前位置 博文首页 > python中_del_还原数据的方法

    python中_del_还原数据的方法

    作者:小妮浅浅 时间:2021-08-05 18:24

    在数据存储过多时,我们会选择清除,不过有时候也需要找回一些我们之前删掉的数据。有的小伙伴可能会使用不同的方法分别完成,那么今天小编带来的_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 
    jsjbwy
    下一篇:没有了