Colección de citas famosas - Consulta de diccionarios - [Llamada mutua Python-C] Cómo pasar dict en Python a la función del lenguaje C. ¿Qué pasa con los parámetros?

[Llamada mutua Python-C] Cómo pasar dict en Python a la función del lenguaje C. ¿Qué pasa con los parámetros?

#¿Incluir? & ltstdio.h & gt

¿#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;

}