gpt4 book ai didi

python - 将元素添加到列表时进行引用计数

转载 作者:行者123 更新时间:2023-12-01 04:41:05 26 4
gpt4 key购买 nike

来自listobject.h

我读到了这一行:

“PyList_SetItem 不会增加新项目的引用计数,但会减少它所替换的项目的引用计数,如果不是零。如果引用计数,它会递减插入列表中。类似地,PyList_GetItem 不会增加返回项目的引用计数。”

但是当我测试元素的引用计数时增加了。

>>> a = 'abc'
>>> sys.getrefcount(a)
3
>>> ls = [1,2]
>>> ls.append(a)
>>> ls
[1, 2, 'abc']
>>> sys.getrefcount(a)
4
>>> ls.insert(1,a)
>>> sys.getrefcount(a)
5
>>>

如果我错了,请纠正我或解释一下这是怎么回事?

最佳答案

append 的实现了解 PyList_SetItem 的这个怪癖并处理引用计数增量。

这确实是唯一可行的方法。引用计数实际上是实现的一个方面,尽管如此,但引用计数并不是 Python 程序员必须处理的事情。

换句话说,如果您用 C 编写扩展,则只需担心 API 是否窃取引用或创建新引用。如果您坚持使用 Python,那么您是安全的。

关于python - 将元素添加到列表时进行引用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30700215/

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