0

以下に示すように、Pythonコードを持っています.Python拡張機能として「C」関数trans implementedを呼び出しています.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,
         &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 に答える