Extraction de la valeur de retour d'une méthode Python appelée depuis C/C
L'article montre comment appeler une méthode Python depuis C/C et extrayez sa valeur de retour. Bien que le code fourni dans la question puisse effectivement imprimer le résultat sur la sortie standard, il n'offre pas de moyen de capturer la valeur pour une manipulation ultérieure en C.
L'approche recommandée implique l'utilisation des méthodes fournies par Python C- API, qui permet une interaction directe avec les objets et fonctions Python. Voici un exemple de la façon de modifier le code pour extraire la valeur de retour :
PyObject* myModuleString = PyString_FromString((char*)"mytest"); PyObject* myModule = PyImport_Import(myModuleString); PyObject* myFunction = PyObject_GetAttrString(myModule, (char*)"myabs"); PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0)); PyObject* myResult = PyObject_CallObject(myFunction, args); double result = PyFloat_AsDouble(myResult);
Dans ce code, nous importons d'abord le module, obtenons une référence à la fonction, créons un tuple avec l'argument de la fonction , appelez la fonction, et enfin extrayez la valeur de retour sous forme de double.
Pour garantir une bonne manipulation, il est essentiel de gérer les erreurs de manière appropriée, comme le suggère Mark Tolonen dans les commentaires. Pour plus d'informations et des cas d'utilisation complexes, reportez-vous à la documentation Python C-API à l'adresse http://docs.python.org/c-api/.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!