0

我有一个如下所述的python代码,它调用一个“C”函数trans实现为python扩展。如何在C代码中提取整数、字符串、列出所有不同类型的参数?下面的代码无法提取列表作为参数。下面的代码只是一个示例代码,可以让您了解我的问题。它不是完整的代码。

测试.py

def tpp:  
    value =0455455  
    name ='go'  
    parameter =[0,0,0]  
    parameter[0] ='hello'
    parameter[1] ='helloworld'        
    trans(value =value, name =name ,parameter =parameter)  

反式

  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,
         &parameter)  
      return NULL;


    }
4

1 回答 1

0

您传入一个列表并期待一个字符串输出 ( char *); 这行不通。列表只能转换为PyObject *. 因此,您应该使用

PyObject *parameter;
...
if(!PyArg_ParseTupleAndKeywords(args, kwargs, "is|O", kwlist, &name, &value, &parameter))

如果要强制对象是列表,请使用

PyObject *parameter;
...
if(!PyArg_ParseTupleAndKeywords(args, kwargs, "is|O!", kwlist, &name, &value, &PyList_Type, &parameter))
于 2012-09-21T06:20:45.977 回答