Tôi đã tìm thấy this ví dụ hay về Mô-đun C Python, trong đó một số nguyên được chuyển cùng với tư cách đối số duy nhất. Làm thế nào tôi có thể thay vì vượt qua một danh sách python như là đối số?Chuyển danh sách làm đối số cho mô-đun C Python?
6
A
Trả lời
15
Từ 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 */
0
Sử dụng một trong những O
arguments và sequence protocol.