Memanggil Kaedah Python dan Mendapatkan Nilai Pulangan daripada C/C
Dalam persekitaran C /C, anda mungkin menghadapi senario di mana anda perlu mengakses fungsi yang ditakrifkan dalam modul Python. Artikel ini akan membincangkan cara menggunakan fungsi ini dengan berkesan dan mengekstrak nilai pulangannya.
Pertimbangkan coretan kod Python berikut:
import math def myabs(x): return math.fabs(x)
Untuk memanggil fungsi ini daripada C , anda boleh menggunakan Python Ciri-ciri C-API. Mulakan dengan memasukkan pengepala Python.h untuk akses API:
#include <Python.h>
Untuk memulakan persekitaran Python, gunakan Py_Initialize():
Py_Initialize();
Seterusnya, anda boleh mengimport modul Python yang diperlukan :
PyRun_SimpleString("import mytest;");
Untuk melaksanakan fungsi tersuai, gunakan Fungsi PyObject_GetAttrString() untuk mendapatkan rujukan kepadanya, buat argumen menggunakan fungsi PyTuple_Pack() dan gunakan fungsi tersebut menggunakan PyObject_CallObject():
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs"); PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0)); PyObject* myResult = PyObject_CallObject(myFunction, args);
Akhir sekali, tukar nilai pulangan Python kepada C double menggunakan yang PyFloat_AsDouble() fungsi:
double result = PyFloat_AsDouble(myResult);
Pastikan untuk mengendalikan sebarang kemungkinan ralat sepanjang proses dengan memasukkan mekanisme pengendalian pengecualian. Pendekatan ini menyediakan kaedah komprehensif untuk memanggil fungsi Python daripada C/C dan mengakses nilai pulangannya.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Panggil Kaedah Python dan Dapatkan Nilai Pulangannya daripada C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!