2010-07-15 10 views
6

मुझे this पाइथन सी मॉड्यूल का अच्छा उदाहरण मिला, जहां एकमात्र पूर्णांक को एकमात्र तर्क के साथ पास किया जाता है। मैं तर्क के रूप में एक अजगर सूची कैसे पास कर सकता हूं?पाइथन सी मॉड्यूल के लिए तर्क के रूप में पास सूची?

उत्तर

15

http://code.activestate.com/lists/python-list/31841/ से:

... 
char * tok;   /* delimiter tokens for strtok */ 
int cols;   /* number of cols to parse, from the left */ 

int numLines;  /* how many lines we passed for parsing */ 
char * line;  /* pointer to the line as a string */ 
char * token;  /* token parsed by strtok */ 

PyObject * listObj; /* the list of strings */ 
PyObject * strObj; /* one string in the list */ 

/* the O! parses for a Python object (listObj) checked 
    to be of type PyList_Type */ 
if (! PyArg_ParseTuple(args, "O!is", &PyList_Type, &listObj, 
      &cols, &tok)) return NULL; 

/* get the number of lines passed to us */ 
numLines = PyList_Size(listObj); 

/* should raise an error here. */ 
if (numLines < 0) return NULL; /* Not a list */ 

...

/* iterate over items of the list, grabbing strings, and parsing 
    for numbers */ 
for (i=0; i<numLines; i++){ 

/* grab the string object from the next element of the list */ 
strObj = PyList_GetItem(listObj, i); /* Can't fail */ 

/* make it a string */ 
line = PyString_AsString(strObj); 

/* now do the parsing */ 

Parsing arguments and building values

संबंधित मुद्दे