[Llamada mutua Python-C] Cómo pasar dict en Python a la función del lenguaje C. ¿Qué pasa con los parámetros?
¿#Contiene? & ltstdlib.h & gt
#¿Incluir? & ltPython.h & gt
¿Electricidad estática? objeto p? *
wmf_reverse(PyObject?*self,?pobject?*parámetros,?pobject?*kwargs)? {?
¿Electricidad estática? carbonizarse*? lista de kw[]? =?{"Nombre",? NULL };
¿Carácter? *¿Nombre? =?NULL
pObjeto? *¿retval? =?NULL?
//?Pregunta 1:? Simplemente tome una cadena, el formato debe ser " s "
//?& gt& gt& gt? if(PyArg_ParseTupleAndKeywords(args, keyds, "isi", kwlist, & nombre))
¿Si? (PyArg_ParseTupleAndKeywords(args, quars? "s", ?kwlist, ? & nombre))? {
¿recuperación? =?(PyObject?*)Py_BuildValue("i ", 1);
printf("%s\n ", nombre);
//?Pregunta 2: No no lo pones
//?& gt& gt& gt? libre(nombre);?
}? {
¿recuperación? =?(PyObject?*)Py_BuildValue("i ", 0);
}
¿Regresión? retval
}?
¿Electricidad estática? PyMethodDef
wmf_methods[]? =?{
{"reverse ",(PyCFunction)wmf_reverse,? ¿METH_VARARGS? |?METH_palabra clave,? "Reverse"},
//? Pregunta 3: La tabla de definición del método debe terminar con un registro vacío.
{NULL,? NULO,? 0,?NULL},
};
//?Pregunta 4: No hay ningún módulo definido.
¿Electricidad estática? estructura? PyModuleDef
wmf_module? =?{
PyModuleDef_HEAD_INIT,
"wmf",/*? ¿nombre? ¿de? ¿Módulo? */
NULL,? /*?¿Módulo? ¿documento? ¿ciruela? ¿Sí? ¿NULO? */
-1,?/*?Tamaño? ¿de? ¿Cada intérprete? ¿estado? ¿de? ¿eso? Módulo,
o? -1? ¿Y si? ¿eso? ¿Módulo? ¿Mantener? ¿estado? ¿existir? ¿mundial? variable. ? */
wmf_methods,
};
//? Pregunta 5: La función de entrada debe declararse como: PyMODINIT_FUNC.
FUNC PimodInit
PyInit_wmf(void)? {
//?Pregunta 6: py_initmodule es el módulo que se inicializará, no un método. Entonces la definición de método de transferencia es incorrecta.
//?Además, python2.x usa Py_Init_module y python3.x usa PyModule_Create.
//?Hay una ligera diferencia entre los dos, así que preste atención. Lo que uso aquí es python3.x.
//Py_InitModule("wmf", métodos más recientes);
p objeto? *m;
m? =?PyModule_Createwmf _ module);
¿Si? (m?==?NULL)? {
¿Volver? NULL
}
¿Devolver? m;
}