Возврат кортежа нескольких объектов в Python C API - PullRequest
3 голосов
/ 17 августа 2010

Я пишу встроенную функцию, которая будет возвращать несколько объектов Python

PyObject *V = PyList_New(0);
PyObject *E = PyList_New(0);
PyObject *F = PyList_New(0);

return Py_BuildValue("ooo", V, E, F);

Это прекрасно компилируется, однако, когда я вызываю ее из программы Python, я получаю ошибку:

SystemError: неверный формат символа передан Py_BuildValue

Как это можно сделать правильно?

РЕДАКТИРОВАТЬ: Следующие работы

PyObject *rslt = PyTuple_New(3);
PyTuple_SetItem(rslt, 0, V);
PyTuple_SetItem(rslt, 1, E);
PyTuple_SetItem(rslt, 2, F);
return rslt;

Однако этоЕсть ли более короткий способ сделать это?

Ответы [ 2 ]

7 голосов
/ 17 августа 2010

Я думаю, что он хочет заглавные O? "OOO", а не "ooo".

0 голосов
/ 17 августа 2010

Использование Cython .

return V, E, F
...