use*_*262 7 python python-c-extension
据我所知,PyList_SetItem和PyList_SETITEM之间的区别在于PyList_SetItem将降低它覆盖的列表项的引用计数,而PyList_SETITEM则不会.
我有什么理由不能一直使用PyList_SetItem吗?或者如果我使用PyList_SetItem来初始化列表中的索引位置,我会遇到麻烦吗?
PyList_SET_ITEM
是一个不安全的宏,基本上将对象粘贴到列表的内部指针数组中,而不进行任何绑定检查.如果有任何非NULL
是在i
列表中的个位置,会发生参照泄漏.PyList_SET_ITEM
窃取您放入列表中的对象的引用.PyList_SetItem
也会窃取引用,但它会检查边界并减少可能位于第i
th位置的任何内容.经验法则PyList_SET_ITEM
用于初始化您刚刚创建的列表PyList_SetItem
.PyList_SetItem
在任何地方使用它也是完全安全的; PyList_SET_ITEM
基本上是速度黑客.