gpt4 book ai didi

python - 来自 sys.getrefcount 的意外结果

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

当我输入时:

>>> astrd = 123
>>> import sys
>>> sys.getrefcount(astrd)
3
>>>

我不明白 astrd 在哪里使用了 3 次?

最佳答案

被引用三次的不是astrd,而是值123astrd 只是(不可变的)数字 123 的一个名称,它可以被多次引用。除此之外,小整数通常是共享的:

>>> astrd = 123
>>> sys.getrefcount(astrd)
4
>>> j = 123
>>> sys.getrefcount(astrd)
5

在第二个赋值中,没有创建新的整数,j 只是整数 123 的新名称。

但是,给定非常大的整数,这不成立:

>>> i = 823423442583
>>> sys.getrefcount(i)
2
>>> j = 823423442583
>>> sys.getrefcount(i)
2

共享整数是 CPython(以及其他)的一个实现细节。由于小整数经常被实例化,共享它们可以节省大量内存。这是因为整数首先是不可变的。

对于第二个示例中的附加引用,请参见。 codeape's answer .

关于python - 来自 sys.getrefcount 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/759740/

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