Maison > développement back-end > C++ > Comment puis-je appeler des méthodes Python et récupérer leurs valeurs de retour depuis C/C ?

Comment puis-je appeler des méthodes Python et récupérer leurs valeurs de retour depuis C/C ?

Barbara Streisand
Libérer: 2024-12-04 21:43:11
original
259 Les gens l'ont consulté

How Can I Call Python Methods and Retrieve Their Return Values from C/C  ?

Appel de méthodes Python et récupération des valeurs de retour à partir de C/C

Dans les environnements C/C, vous pouvez rencontrer des scénarios dans lesquels vous devez accéder fonctions définies dans les modules Python. Cet article explique comment invoquer ces fonctions efficacement et extraire leurs valeurs de retour.

Considérez l'extrait de code Python suivant :

import math

def myabs(x):
    return math.fabs(x)
Copier après la connexion

Pour appeler cette fonction depuis C , vous pouvez utiliser le Python Fonctionnalités de C-API. Commencez par inclure l'en-tête Python.h pour l'accès à l'API :

#include <Python.h>
Copier après la connexion

Pour lancer l'environnement Python, invoquez Py_Initialize() :

Py_Initialize();
Copier après la connexion

Ensuite, vous pouvez importer le module Python requis :

PyRun_SimpleString("import mytest;");
Copier après la connexion

Pour exécuter la fonction personnalisée, invoquez la fonction PyObject_GetAttrString() pour obtenir une référence à celle-ci, créez des arguments à l'aide de la fonction PyTuple_Pack() et invoquez la fonction à l'aide de PyObject_CallObject() :

PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs");
PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0));
PyObject* myResult = PyObject_CallObject(myFunction, args);
Copier après la connexion

Enfin, convertissez la valeur de retour Python en un double C à l'aide de la fonction PyFloat_AsDouble() :

double result = PyFloat_AsDouble(myResult);
Copier après la connexion

Assurez-vous de gérer toutes les erreurs potentielles tout au long du processus en incorporant des mécanismes de gestion des exceptions. Cette approche fournit une méthode complète pour appeler des fonctions Python depuis C/C et accéder à leurs valeurs de retour.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal