如何从C API返回包含None值的元组?
发布时间:2020-12-16 09:44:39 所属栏目:百科 来源:网络整理
导读:将包含None值的元组从C扩展名返回到 Python的适当方法是什么?我知道可以使用创建单个None值 result = Py_BuildValue(""); 并且可以使用类似的东西创建元组 result = Py_BuildValue("(ii)",123,456); 但我没有看到一种方法来组合它,例如,一个元组包含一个正
将包含None值的元组从C扩展名返回到
Python的适当方法是什么?我知道可以使用创建单个None值
result = Py_BuildValue(""); 并且可以使用类似的东西创建元组 result = Py_BuildValue("(ii)",123,456); 但我没有看到一种方法来组合它,例如,一个元组包含一个正确的整数和一个无值. 解决方法
在Python中只有一个None对象,你总是可以在C中将其称为
Py_None .
代码… result = Py_BuildValue(""); …只是递增Py_None的引用计数并返回其指针,所以它与…相同 Py_INCREF(Py_None); result = Py_None; 如果你只想返回None,那么使用…… Py_INCREF(Py_None); return Py_None; …或者,从Python 2.4开始,你可以用宏做同样的事情…… Py_RETURN_NONE; 如果你以元组的形式返回它,就像这样…… return Py_BuildValue("(O)",Py_None); …没有必要增加引用计数 – 但如果你把它归还像这样的元组…… PyObject* tuple = PyTuple_New(1); Py_INCREF(Py_None); PyTuple_SetItem(tuple,Py_None); return tuple; …然后你必须增加引用计数,因为 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容