Extrahieren des Rückgabewerts einer von C/C aufgerufenen Python-Methode
Der Artikel zeigt, wie man eine Python-Methode von C/C aus aufruft und extrahieren Sie seinen Rückgabewert. Während der bereitgestellte Code in der Frage das Ergebnis effektiv auf stdout ausgeben kann, bietet er keine Möglichkeit, den Wert für eine weitere Bearbeitung in C zu erfassen.
Der empfohlene Ansatz beinhaltet die Verwendung der von Python C bereitgestellten Methoden. API, die eine direkte Interaktion mit Python-Objekten und -Funktionen ermöglicht. Hier ist ein Beispiel dafür, wie Sie den Code ändern, um den Rückgabewert zu extrahieren:
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);
In diesem Code importieren wir zuerst das Modul, erhalten einen Verweis auf die Funktion und erstellen ein Tupel mit dem Argument für die Funktion , rufen Sie die Funktion auf und extrahieren Sie schließlich den Rückgabewert als Double.
Um eine ordnungsgemäße Handhabung zu gewährleisten, ist es wichtig, Fehler angemessen zu verwalten, wie von Mark Tolonen in den Kommentaren vorgeschlagen. Weitere Informationen und komplizierte Anwendungsfälle finden Sie in der Python C-API-Dokumentation unter http://docs.python.org/c-api/.
Das obige ist der detaillierte Inhalt vonWie kann ich den Rückgabewert einer von C/C aufgerufenen Python-Methode abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!