gpt4 book ai didi

python - 为什么 Python 对小整数的引用计数出奇地高?

转载 作者:太空狗 更新时间:2023-10-29 20:12:12 24 4
gpt4 key购买 nike

this answer 我找到了一种在 Python 中获取对象引用计数的方法。

他们提到使用 sys.getrefcount()。我试过了,但我得到了意想不到的结果。当有 1 个引用时,计数似乎是 20。这是为什么?

我查看了 documentation但它似乎并没有解释原因。

enter image description here

最佳答案

对一个对象有很多引用有很多原因。追踪哪一个可能很困难,并决定它是否值得可能会绕过你的兴趣水平。调试应用程序和 Python 变体的开发人员最感兴趣的是引用计数。

  • Python 试图为每个引用保留一个实际值。因此,示例中的 100 与递归调用的某些内部限制相同的 100 或与当前循环索引相同的 100。
  • Python 保留对一些常见对象的额外引用,包括低整数。 1,234,567 的引用计数与 20 的引用计数不同。
  • 许多函数内存并保留对最近参数的引用。
  • 一些口译员保留对最近的值和最近行中引用的值的引用。例如,之前的返回值存储在“_”中。这意味着在解释器中运行和从命令行运行会给出不同的答案。
  • 与所有引用计数方案一样,也存在错误。例如,PyTuple_GetItem() 有一些有问题的选择。

确切的引用计数和这些计数的含义在 PyPi、C-Python 和 IPython 中是不同的。引用计数很少是发现 Python 中异常行为的好工具。

关于python - 为什么 Python 对小整数的引用计数出奇地高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38253757/

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