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 语句,相当于主动调用对象的析构方法,会立即删除对象,并回收内存
- 通常是删除临时的对象,对那些长期占用内存的临时对象进行回收