在python中,当我们给一个变量赋一个新的值时,旧的值会发生什么?

问题描述 投票:0回答:1

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

python object variables immutability
1个回答
1
投票

如果一个对象不再有任何引用,它就有资格进行垃圾收集。通常情况下,它会立即发生。

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

>>> 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代码中访问的对象。


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.