Rei*_*eek 4 python python-c-api
将包含None值的元组从 C 扩展返回到 Python的适当方法是什么?我知道None可以使用创建单个值
result = Py_BuildValue("");
Run Code Online (Sandbox Code Playgroud)
并且可以使用类似的东西创建元组
result = Py_BuildValue("(ii)", 123, 456);
Run Code Online (Sandbox Code Playgroud)
但我没有看到一种方法可以将它结合起来得到一个包含适当整数和None值的元组。
NonePython 中只有一个对象,你总是可以在 C 中将它称为Py_None.
编码...
result = Py_BuildValue("");
Run Code Online (Sandbox Code Playgroud)
...只是增加的引用计数Py_None并返回其指针,所以它与...相同
Py_INCREF(Py_None);
result = Py_None;
Run Code Online (Sandbox Code Playgroud)
如果您只想返回None,请使用...
Py_INCREF(Py_None);
return Py_None;
Run Code Online (Sandbox Code Playgroud)
...或者,从 Python 2.4 开始,您可以使用宏执行相同的操作...
Py_RETURN_NONE;
Run Code Online (Sandbox Code Playgroud)
如果你在一个元组中返回它,就像这样......
return Py_BuildValue("(O)", Py_None);
Run Code Online (Sandbox Code Playgroud)
...没有必要增加引用计数 -Py_BuildValue()为你做这件事。
但是如果你在这样的元组中返回它......
PyObject* tuple = PyTuple_New(1);
Py_INCREF(Py_None);
PyTuple_SetItem(tuple, 0, Py_None);
return tuple;
Run Code Online (Sandbox Code Playgroud)
...然后你必须增加引用计数,因为PyTuple_SetItem()它不适合你。
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |