使用超过1个返回值调用python脚本
如何处理返回多个列表的Python函数 Python脚本:使用超过1个返回值调用python脚本,python,python-c-api,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); 这是调用函数的正确方法吗? 但是我不能使用对象来提取列表值。 我做错了什么?您没有收到两个对象,而是收到一个新的对PyTuple的引用,该引用实
display():
a = [ 'a','b','abc']
b = [ 1 , 2 , 3]
return [a,b]
调用上述python函数的c函数片段:
pValue,pValue1 = PyObject_CallObject(pFunc, pArgs);
这是调用函数的正确方法吗?
但是我不能使用对象来提取列表值。
我做错了什么?您没有收到两个对象,而是收到一个新的对
PyTuple的引用,该引用实际上是由您的函数返回的
PyObject *ret;
ret=PyObject_CallObject(pFunc,pArgs);
PyObject *ob1,*ob2;
PyArg_ParseTuple(ret,"oo",ob1,ob2); //o-> pyobject |i-> int|s-> char*
所有Python函数/方法都返回一个“thing”,但该“thing”可以是一个“container”。您不断询问如何返回多个列表;您要做的是返回一个元组或列表,其中包含要返回的“多个列表”。然后,在调用代码中,访问元组或列表的元素,以获得要返回的“多个列表”。在python中return(a,b)
返回元组。单个对象。在C语言中,您试图读取结果,就像它是两个对象一样。尝试返回[a,b]
。因为我认为列表比元组更容易处理。我的c非常生疏。示例不是有效的Python代码。c不做多次返回,我的朋友。我尝试过这个,但对我不起作用。这是我运行程序时得到的:Exception exceptions.SystemError:“新样式的getargs格式,但参数不是元组”在“垃圾收集”ignoredEven中,我对此不清楚。我很久以前就和这个合作过。尝试将返回封装在一个元组中,以便此指令能够工作。类似于:return((a,b))#现在返回的是一个元组,否则,请在python文档中查找参数解析。有两种以上不同的方法来实现函数调用和参数解析。如果您对返回列表感兴趣,那么将考虑PyListObject。我使用它从m程序中的列表中提取值。我让它为一个列表工作,但是当python函数发回多个列表时,我就被卡住了。PyArg_ParseTuple(ret,“O | O:ref”、&ob1和&ob2)
为我工作。元组是将多个对象发回c程序的唯一方法吗?我可以发回列表元组吗?你可以将任何对象发回c程序(在您的示例中是tuple)我如何发送多个列表?我的c程序应该如何解释itThanks。我将尝试返回一个包含多个列表的列表。