在 python 中,当我们为变量分配一个新值时,旧值会发生什么变化?

In python when we assign a new value to a variable what happens to the old one?

我知道还有其他类似的问题,但它们没有回答重新分配后先前值发生的情况,这就是为什么我决定 post 一个新问题。到目前为止,我已经了解到 python 中的所有内容都是一个对象,即使是 int、float、string、bool 类型的变量也是对象,我在某处读到当我们分配一个变量 num = 11 时num 实际上并没有在其中存储“11”的值,而是一个指向内存中某个位置的指针,其中“11" 被存储,如果我们试图重新分配一个值给 num num = 22 那么它将停止指向 "11" 并开始指向新值 "22" 将存储在内存中的不同位置,所以我的问题是先前的值发生了什么,即 11 是释放还是删除?

Python 跟踪特定变量有多少引用。如果没有任何对特定值的引用,它将被清除,也称为 Garbage Collection。因此,在您的情况下,11 一旦失去引用,就会被 python 删除(收集垃圾)。

如果不再有对某个对象的任何引用,它就有资格进行垃圾回收。通常,它会立即发生。

引用循环可能存在,一个简单的例子是引用计数不为零的对象,因为它持有对自身的唯一引用。

>>> a = []  # A list with a reference count of 1
>>> a.append(a)  # List now has a reference count of 2: a and a[0]
>>> del a  # List has a reference count of 1, but no name refers to the list

Python 实现使用单独的算法定期扫描所有现有对象以查找此类循环并删除无法再从 Python 代码访问的对象。