Maison > développement back-end > C++ > Comment puis-je récupérer la valeur de retour d'une méthode Python appelée depuis C/C ?

Comment puis-je récupérer la valeur de retour d'une méthode Python appelée depuis C/C ?

DDD
Libérer: 2024-12-07 06:36:16
original
386 Les gens l'ont consulté

How Can I Retrieve the Return Value of a Python Method Called from C/C  ?

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal