Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Nilai Pulangan Kaedah Python yang Dipanggil daripada C/C?

Bagaimanakah Saya Boleh Mendapatkan Nilai Pulangan Kaedah Python yang Dipanggil daripada C/C?

DDD
Lepaskan: 2024-12-07 06:36:16
asal
384 orang telah melayarinya

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

Mengekstrak Nilai Pulangan Kaedah Python yang Dipanggil daripada C/C

Artikel menunjukkan cara memanggil kaedah Python daripada C/C dan mengekstrak nilai pulangannya. Walaupun kod yang disediakan dalam soalan boleh mencetak hasil secara berkesan ke stdout, ia tidak menawarkan cara untuk menangkap nilai untuk manipulasi selanjutnya dalam C.

Pendekatan yang disyorkan melibatkan penggunaan kaedah yang disediakan oleh Python C- API, yang membolehkan interaksi langsung dengan objek dan fungsi Python. Berikut ialah contoh cara mengubah suai kod untuk mengekstrak nilai pulangan:

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);
Salin selepas log masuk

Dalam kod ini, kami mula-mula mengimport modul, mendapatkan rujukan kepada fungsi, mencipta tuple dengan hujah untuk fungsi , panggil fungsi, dan akhirnya ekstrak nilai pulangan sebagai dua kali ganda.

Untuk memastikan pengendalian yang betul, adalah penting untuk mengurus ralat dengan sewajarnya, seperti yang dicadangkan oleh Mark Tolonen dalam ulasan. Untuk maklumat lanjut dan kes penggunaan yang rumit, rujuk dokumentasi C-API Python di http://docs.python.org/c-api/.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nilai Pulangan Kaedah Python yang Dipanggil daripada C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan