gpt4 book ai didi

借用和窃取引用的 Python C-API 函数

转载 作者:太空狗 更新时间:2023-10-29 17:48:43 48 4
gpt4 key购买 nike

Python C-API 中的标准约定是

  • 函数不会从输入参数(即对象)中窃取引用

  • 返回值和输出参数(即对象)拥有一个引用

Python C-API 中的大多数函数都遵循此约定。但是,也有一些异常(exception)。我遇到过以下情况:

从输入参数窃取引用的函数

PyModule_AddObject

返回值或输出参数借用引用的函数

PyErr_Occurred
PyTuple_GetItem
PyTuple_GETITEM
PyDict_GetItem
PyDict_GetItemString
PyDict_Next

是否有此类功能的完整列表?在编写 Python 扩展模块时,这样的列表将是一个有用的引用。

最佳答案

在 Python 2.7.2 C-API 文档中对单词“steal”和“borrow”进行的文本搜索给出了以下列表:

从输入参数窃取引用的函数

PyCell_SET (but not PyCell_Set)
PyList_SetItem, PyList_SET_ITEM
PyModule_AddObject
PyTuple_SetItem, PyTuple_SET_ITEM

返回值或输出参数借用引用的函数

all PyArg_Xxx functions
PyCell_GET (but not PyCell_Get)
PyDict_GetItem
PyDict_GetItemString
PyDict_Next
PyErr_Occurred
PyEval_GetBuiltins
PyEval_GetFrame
PyEval_GetGlobals
PyEval_GetLocals
PyFile_Name
PyFunction_GetClosure
PyFunction_GetCode
PyFunction_GetDefaults
PyFunction_GetGlobals
PyFunction_GetModule
PyImport_AddModule
PyImport_GetModuleDict
PyList_GetItem, PyList_GETITEM
PyMethod_Class, PyMethod_GET_CLASS
PyMethod_Function, PyMethod_GET_FUNCTION
PyMethod_Self, PyMethod_GET_SELF
PyModule_GetDict
PyObject_Init
PyObject_InitVar
PySequence_Fast_GET_ITEM
PySys_GetObject
PyThreadState_GetDict
PyTuple_GetItem, PyTuple_GET_ITEM
PyWeakref_GetObject, PyWeakref_GET_OBJECT
Py_InitModule
Py_InitModule3
Py_InitModule4

关于借用和窃取引用的 Python C-API 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247779/

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