变量分配

马可

我对python中的变量赋值问题感到困惑。我尝试在Internet上查找有关此问题的页面,但我仍然不明白。

假设我为变量分配了一个特定的值:

v = 2

Python在某个内存位置中保留了一个带有值的位置2现在,我们知道如何通过为其分配变量名称来访问该特定内存位置:v

如果是这样,我们可以这样做:

v = v + 4

将使用值6(2 + 4)归档新的存储位置,因此现在要访问此值,我们将变量绑定到该值v

这是正确的还是完全不正确的?

2内存位置中的初始值会怎样?它不再绑定到任何变量,因此无法再访问此值?这是否意味着在接下来的几分钟内,垃圾收集器将释放此内存位置?

感谢您的答复。

编辑:

v = 2v = v + 2只是简单的例子。以我为例,而不是2和v + 2,我有一个非Python本机对象,其权重范围从几十兆字节到400兆字节不等。我很抱歉没有一开始就清除此问题。我不知道整数和其他类型的对象之间是否有区别。

修剪

到目前为止,您是对的。实际上,发生的事情是Python构造了整数对象24在第一个分配中,解释器使v指向2对象。

正如您所怀疑的那样,在第二个作业中,我们构造了一个对象6并使其指向v

接下来发生的情况取决于实现。大多数将对象用于原子值的解释器和编译器都将2对象识别为一个小整数,很可能会再次使用,并且维护成本非常低-因此不会被收集。通常,代码中出现的文字将不会被移交给垃圾回收。


感谢您更新问题。是的,您的大对象(没有对其的引用)现在可用于GC。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章