首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >借用和窃取引用的Python函数

借用和窃取引用的Python函数
EN

Stack Overflow用户
提问于 2012-04-20 14:01:12
回答 2查看 2.5K关注 0票数 16

Python中的标准约定是

  • 函数不会从输入参数(即对象)中窃取引用。
  • 返回值和输出参数(即对象)拥有一个引用。

Python中的大多数函数都遵循这个约定。然而,也有一些例外。我遇到了以下情况:

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

代码语言:javascript
运行
复制
PyModule_AddObject

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

代码语言:javascript
运行
复制
PyErr_Occurred
PyTuple_GetItem
PyTuple_GETITEM
PyDict_GetItem
PyDict_GetItemString
PyDict_Next

是否在任何地方都有这类职能的全面清单?在编写Python扩展模块时,这样的列表将是一个有用的参考。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-20 17:23:18

在Python2.7.2C-API文档中搜索单词“偷窃”和“借用”的文本给出了以下列表:

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

代码语言:javascript
运行
复制
PyCell_SET (but not PyCell_Set)
PyList_SetItem, PyList_SET_ITEM
PyModule_AddObject
PyTuple_SetItem, PyTuple_SET_ITEM

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

代码语言:javascript
运行
复制
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
票数 14
EN

Stack Overflow用户

发布于 2012-04-20 14:44:14

Python上的这个帖子强烈建议不存在这样的列表。线程还讨论了如何处理它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10247779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档