我知道还有其他类似的问题,但它们并没有回答重新赋值后之前的值会发生什么,这就是为什么我决定发布一个新的问题。到目前为止,我已经知道在python中所有的东西都是一个对象,即使是int、float、string、bool类型的变量也是对象,我在某处读到,当我们将一个变量赋值给 num = 11
那么num实际上并没有存储""的值。11中的",但它是一个指针,指向内存中的某个位置,其中"11"被存储,如果我们试图将一个值重新分配给 num num = 22
那么它就会停止指向"11"并开始指向该新值"22"所以我的问题是,之前的值会发生什么,即 11
是被释放还是被删除?
如果一个对象不再有任何引用,它就有资格进行垃圾收集。通常情况下,它会立即发生。
引用循环是有可能存在的,一个简单的例子是一个对象的引用计数是非零的,因为它拥有对自己的唯一引用。
>>> 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代码中访问的对象。
Python会跟踪一个特定变量有多少个引用。如果没有任何对某一特定值的引用,它将被清除,这也被称为 Garbage Collection
. 所以在你的情况下 11
一旦失去引用,就会被python删除(垃圾回收)。