我有一个如下所述的python代码,它调用一个“C”函数trans实现为python扩展。如何在C代码中提取整数,字符串,列出所有不同类型的参数? 下面的代码不能将列表作为参数提取。下面的代码只是一个示例代码,它将给出我所拥有的问题的概念。它不是完整的代码。
Test.py
def tpp:
value =0455455
name ='go'
parameter =[0,0,0]
parameter[0] ='hello'
parameter[1] ='helloworld'
trans(value =value, name =name ,parameter =parameter)
trans.c
static Pyobject mod_trans(Pyobject *self, Pyobject *args ,Pyobject *keyargs)
{
char name ;
int value ;
char* parameter;
static char *kwlist[] ={"value", "name", "parameter")
if(!PyArg_ParseTupleAndKeywords(args,keyargs, "si|items",kwlist,&name,&value,
¶meter)
return NULL;
}
答案 0 :(得分:0)
你传入一个列表并期待一个字符串输出(char *
);这不行。列表只能转换为PyObject *
。因此,您应该使用
PyObject *parameter;
...
if(!PyArg_ParseTupleAndKeywords(args, kwargs, "is|O", kwlist, &name, &value, ¶meter))
如果要强制该对象是列表,请使用
PyObject *parameter;
...
if(!PyArg_ParseTupleAndKeywords(args, kwargs, "is|O!", kwlist, &name, &value, &PyList_Type, ¶meter))