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

最新文章

  1. java安全沙箱(三)之内置于Java虚拟机(及语言)的安全特性
  2. Vs2013 头文件注释
  3. php按条件查询的数据分页显示,点击下一页时又列出全部数据的解决办法
  4. node.js EventEmitter发送和接收事件
  5. delete table 和 truncate table
  6. VFS对象总结
  7. RemixOS Player 让用户在 Windows 上运行 Android App
  8. HDOJ 2056 Rectangles
  9. Codeforces 366C Dima and Salad
  10. 【ecos学习1】wmware运行redboot[方法一]--脚本实现配置
  11. 自己实现数据结构系列五---BinarySearchTree
  12. php file_get_contents 使用3法
  13. 数据抓取的艺术(三):抓取Google数据之心得
  14. Java 替换空格
  15. Ubuntu下LimeSDR Mini使用说明
  16. hibernate多对一单向关联注解方式
  17. go语言基础之break和continue的区别
  18. up6-自定义文件存储路径
  19. C#中动态调用DLL动态链接库(转)
  20. docker集群

热门文章

  1. 【Azure 应用服务】App Service 运行状况健康检查功能简介 (Health check)
  2. Http Request Smuggling - Note
  3. postman之断言
  4. “入职一年,那个被高薪挖来的Android开发被劝退了。”
  5. 阿里、腾讯、百度、网易、美团Android面试经验分享,拿到了百度、腾讯offer
  6. Java-Dubbo学习及整合SpringBoot
  7. MVC配置原理-源码
  8. Golang语言系列-05-数组和切片
  9. netty系列之:内置的Frame detection
  10. Pikachu-php反序列化、XXE、SSRF模块