如何删除分配给变量的对象?

Tob*_*ert 3 python instance del python-3.x

我有以下代码:

class Node:
  def __init__(self, item):
    self.item = item  

node1 = Node(12)
cur = node1
Run Code Online (Sandbox Code Playgroud)

是否可以node1使用删除cur

我试过了,del cur但它没有给出想要的结果,cur现在不再存在,但node1仍然存在。

任何帮助表示赞赏。

Dee*_*ace 5

让我们澄清一个误解:在 Python 中没有“分配”对象。

变量只是对内存中恰好包含值的位置的引用。

通过这样做,del cur您只是确保cur不引用node1也引用的内存位置,但不会发生任何事情node1

看看这个可视化。请注意node1's 和cur's 箭头如何指向同一Node对象在内存中的位置。如果您单击“转发”,您将看到del cur执行时唯一发生的事情是cur的箭头将被删除(cur即将不再引用内存中node1引用的相同位置)。

没有做同样的node1事情就没有办法做同样的事情del node1,即使那样,垃圾收集器也可以决定何时删除Node对象本身(这实际上会释放它所占用的内存)。这取决于 Python 解释器的具体实现,但这通常是通过引用计数来完成的。

有关有用信息,请参阅以下 2 个站外资源:

Python 的垃圾收集器关于 Python 名称和值的事实和神话