Heim > Backend-Entwicklung > C++ > Wie extrahiere ich den Rückgabewert einer Python-Funktion, wenn sie von C/C aufgerufen wird?

Wie extrahiere ich den Rückgabewert einer Python-Funktion, wenn sie von C/C aufgerufen wird?

Linda Hamilton
Freigeben: 2024-12-25 01:23:14
Original
966 Leute haben es durchsucht

How to Extract a Python Function's Return Value When Called from C/C  ?

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

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('.')");
Nach dem Login kopieren

Funktion importieren und aufrufen

  1. Python-Modul importieren:
PyObject* myModuleString = PyString_FromString("mytest");
PyObject* myModule = PyImport_Import(myModuleString);
Nach dem Login kopieren
  1. Holen Sie sich eine Referenz zum Funktion:
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs");
Nach dem Login kopieren
  1. Konstruieren Sie die Funktionsargumente:
PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0));
Nach dem Login kopieren
  1. Rufen Sie die Funktion auf:
PyObject* myResult = PyObject_CallObject(myFunction, args);
Nach dem Login kopieren

Rückgabewert extrahieren

Ergebnis konvertieren zu einem Double:

double result = PyFloat_AsDouble(myResult);
Nach dem Login kopieren

Verwendung

In Ihrem C/C-Code können Sie nun den extrahierten Rückgabewert (Ergebnis) verwenden:

printf("Absolute value: %f\n", result);
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage