我对python中的变量赋值问题感到困惑。我尝试在Internet上查找有关此问题的页面,但我仍然不明白。
假设我为变量分配了一个特定的值:
v = 2
Python在某个内存位置中保留了一个带有值的位置2
。现在,我们知道如何通过为其分配变量名称来访问该特定内存位置:v
如果是这样,我们可以这样做:
v = v + 4
将使用值6
(2 + 4)归档新的存储位置,因此现在要访问此值,我们将变量绑定到该值v
。
这是正确的还是完全不正确的?
2
内存位置中的初始值会怎样?它不再绑定到任何变量,因此无法再访问此值?这是否意味着在接下来的几分钟内,垃圾收集器将释放此内存位置?
感谢您的答复。
编辑:
该v = 2
和v = v + 2
只是简单的例子。以我为例,而不是2和v + 2,我有一个非Python本机对象,其权重范围从几十兆字节到400兆字节不等。我很抱歉没有一开始就清除此问题。我不知道整数和其他类型的对象之间是否有区别。
到目前为止,您是对的。实际上,发生的事情是Python构造了整数对象2和4。在第一个分配中,解释器使v指向2对象。
正如您所怀疑的那样,在第二个作业中,我们构造了一个对象6并使其指向v。
接下来发生的情况取决于实现。大多数将对象用于原子值的解释器和编译器都将2对象识别为一个小整数,很可能会再次使用,并且维护成本非常低-因此不会被收集。通常,代码中出现的文字将不会被移交给垃圾回收。
感谢您更新问题。是的,您的大对象(没有对其的引用)现在可用于GC。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句