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);
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!