del x 和 x=None 回收内存的区别?

Difference between del x and x=None for reclaiming the memory?

我想回收下面 self.x 表示的 class 中实例变量的内存。

我应该使用命令del self.x;或 self.x=None?他们有什么区别?假设要将命令放入 class 的 __del____exit___ 函数中。

首先要了解的是,del self.xself.x = None 都不会释放任何内存。他们所做的都是将 self.x 引用的对象的引用计数器减一。然后如果这个对象的计数器已经达到 0 时垃圾收集器将 运行 然后内存将被释放

对于两者的区别,您将无法读取值self.x,因为del self.x将从实例字典中删除xself.x = None 只是重新分配 self.x 对象 None.