Heim > Backend-Entwicklung > C++ > Wie kann ich den Rückgabewert einer von C/C aufgerufenen Python-Methode abrufen?

Wie kann ich den Rückgabewert einer von C/C aufgerufenen Python-Methode abrufen?

DDD
Freigeben: 2024-12-07 06:36:16
Original
394 Leute haben es durchsucht

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

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage