zoukankan      html  css  js  c++  java
  • Python

    del 语句

    Python 提供了 del 语句用于删除不再使用的变量

    语法

    del 表达式

    删除变量的栗子

    var = "hello"
    del var
    print(var)
    
    
    # 输出结果
        print(var)
    NameError: name 'var' is not defined

    变量已经被删除了,所以无法访问变量

    类的析构方法

    • Python 提供了一种机制使得对象被删除前能够得到通知
    • 对象被删除时,如果该对象拥有名为 __del__  的方法,该方法在删除前被调用,该方法又被称为析构方法

    语法

    class 类:
        def __del__(self):
            self.属性

    重点

    • 析构方法是对象在被垃圾回收的时候起作用的一个方法
    • 它的执行一般也就意味着对象不能够继续引用, 回收内存
    • Python 建议不要在对象销毁时做任何事情,因为对象销毁的时间难以确定
    • 所以析构方法一般无须定义,日常使用时无需关心内存的分配和释放,因为此工作都是交给 Python 解释器来执行
    • 一句话:析构方法的调用是由解释器在进行垃圾回收时自动触发执行的

    栗子一

    当对象在某个作用域中调用完毕,在跳出其作用域的同时析构方法会自动被调用,这样可以释放内存空间

    # 析构方法
    class PoloBlog:
        # 构造方法
        def __init__(self):
            print("自动调用构造方法")
    
        def __del__(self):
            print("自动调用析构方法,释放内存")
    
    
    blog = PoloBlog()
    print("最后一句代码")
    
    
    # 输出结果
    自动调用构造方法
    最后一句代码
    自动调用析构方法,释放内存

      

    栗子二

    主动 del 对象

    # 析构方法
    class PoloBlog:
        # 构造方法
        def __init__(self):
            print("自动调用构造方法")
    
        def __del__(self):
            print("自动调用析构方法,释放内存")
    
    
    blog = PoloBlog()
    # 主动删除对象
    del blog
    print("最后一句代码")
    
    
    # 输出结果
    自动调用构造方法
    自动调用析构方法,释放内存
    最后一句代码 
    • 使用 del 语句,相当于主动调用对象的析构方法,会立即删除对象,并回收内存
    • 通常是删除临时的对象,对那些长期占用内存的临时对象进行回收
  • 相关阅读:
    生成函数解决多重集合的计数问题
    kmp板子
    poj1001
    【题解】洛谷P1315 [NOIP2011TG] 观光公交(前缀和+贪心)
    【题解】洛谷P1941 [NOIP2014TG] 飞扬的小鸟(背包DP)
    【题解】洛谷P2679 [NOIP2015TG] 子串(DP+滚动数组)
    【题解】洛谷P1514 [NOIP2010TG] 引水入城(DFS+DP)
    【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)
    [arc063F]Snuke's Coloring 2-[线段树+观察]
    [agc001E]BBQ Hard[组合数性质+dp]
  • 原文地址:https://www.cnblogs.com/poloyy/p/15192098.html
Copyright © 2011-2022 走看看