gpt4 book ai didi

python - 为什么 sys.getrefcount() 返回 2?

转载 作者:IT老高 更新时间:2023-10-28 21:18:44 24 4
gpt4 key购买 nike

据我了解,sys.getrefcount() 返回对象的引用数,在以下情况下“应该”为 1:

import sys,numpy
a = numpy.array([1.2,3.4])
print sys.getrefcount(a)

然而,结果是2!所以,如果我:

del a

“numpy.array([1.2,3.4])”对象是否仍然存在(没有垃圾回收)?

最佳答案

当您调用 getrefcount() 时,引用按值复制到函数的参数中,暂时增加对象的引用计数。这就是第二个引用的来源。

这在 documentation 中有解释。 :

The count returned is generally one higher than you might expect, because it includes the (temporary) reference as an argument to getrefcount().

关于你的第二个问题:

If I "del a", will the "numpy.array([1.2,3.4])" object still be there (no garbage collection)?

getrefcount() 退出时,数组的引用计数将回到 1,随后的 del a 将释放内存。

关于python - 为什么 sys.getrefcount() 返回 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com