的第三個參數PyList_SetItem
是要添加到列表中,這通常是從C型轉換,如在這個簡單的例子Python的對象:
/* This adds one to each item in a list. For example:
alist = [1,2,3,4,5]
RefArgs.MyFunc(alist)
*/
static PyObject * MyFunc(PyObject *self, PyObject *args)
{
PyObject * ArgList;
int i;
PyArg_ParseTuple(args, "O!", &PyList_Type, &ArgList));
for (i = 0; i < PyList_Size(ArgList); i++)
{
PyObject * PyValue;
long iValue;
PyValue = PyList_GetItem(ArgList, i);
/* Add 1 to each item in the list (trivial, I know) */
iValue = PyLong_AsLong(PyValue) + 1;
/* SETTING THE ITEM */
iRetn = PyList_SetItem(ArgList, i, PyLong_FromLong(iValue));
if (iRetn == -1) Py_RETURN_FALSE;
}
Py_RETURN_TRUE;
}
PyObject_SetItem
是相似的。區別在於PyList_SetItem
是盜取的參考,但PyObject_SetItem
只是借用它。 PyObject_SetItem
不能與不可變對象一起使用,如元組。
如果我想將C對象(Atom)添加到列表中,PyLong_FromLong的等效函數是什麼? – user2117235 2013-03-12 14:35:01