使用多于1个返回值调用python脚本

时间:2012-08-13 15:42:16

标签: python python-c-api

如何处理返回多个列表的Python函数

Python脚本:

display():
    a = [ 'a','b','abc']
    b = [ 1 , 2 , 3]
    return [a,b]

调用上述python函数的c函数片段:

pValue,pValue1 = PyObject_CallObject(pFunc, pArgs);

这是调用该函数的正确方法吗? 但后来我无法使用这些对象来提取列表值。 我做错了什么?

3 个答案:

答案 0 :(得分:3)

PyObject *ret;
ret=PyObject_CallObject(pFunc,pArgs);
PyObject *ob1,*ob2;

PyArg_ParseTuple(ret,"oo",ob1,ob2); //o-> pyobject |i-> int|s-> char*

你就是这样做的。

答案 1 :(得分:2)

所有Python函数/方法都返回一个'thing',但'thing'可以是'容器'。你一直在问如何返回多个列表;你想要做的是返回一个元组或一个列表,其中包含你想要返回的“多个列表”。然后,在调用代码中,您可以访问元组或列表的元素以访问要返回的“多个列表”。

答案 2 :(得分:1)

您没有收到两个对象,您会收到一个由您的函数实际返回的PyTuple的新引用。