Heim >Backend-Entwicklung >C++ >Wie extrahiere ich den Rückgabewert einer Python-Funktion, wenn sie von C/C aufgerufen wird?
Extrahieren des Rückgabewerts aus einer in C/C aufgerufenen Python-Funktion
Das Aufrufen einer benutzerdefinierten Python-Funktion aus C/C ermöglicht erweiterte Funktionalität, Das Extrahieren des Rückgabewerts kann jedoch eine Herausforderung sein. Hier ist eine Lösung mit der Python C-API.
Das Python-Modul
Erstellen Sie ein Python-Modul (mytest.py):
import math def myabs(x): return math.fabs(x)
Der C/C-Code
Importieren Sie den Python3-Interpreter in C/C (test.cpp):
#include <Python.h> int main() { Py_Initialize(); PyRun_SimpleString("import sys; sys.path.append('.')");
Funktion importieren und aufrufen
PyObject* myModuleString = PyString_FromString("mytest"); PyObject* myModule = PyImport_Import(myModuleString);
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs");
PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0));
PyObject* myResult = PyObject_CallObject(myFunction, args);
Rückgabewert extrahieren
Ergebnis konvertieren zu einem Double:
double result = PyFloat_AsDouble(myResult);
Verwendung
In Ihrem C/C-Code können Sie nun den extrahierten Rückgabewert (Ergebnis) verwenden:
printf("Absolute value: %f\n", result);
Hinweis: Denken Sie daran, bei diesen Vorgängen nach Fehlern zu suchen. Weitere Einzelheiten zur C-API finden Sie in der offiziellen Dokumentation.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich den Rückgabewert einer Python-Funktion, wenn sie von C/C aufgerufen wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!