Fungsi C Dipanggil daripada Python melalui ctypes Mengembalikan Nilai Salah
Apabila memanggil fungsi C daripada Python menggunakan ctypes, adalah penting untuk menentukan dengan betul hujah dan jenis pulangan untuk memastikan penukaran data yang betul. Kegagalan berbuat demikian boleh mengakibatkan nilai yang salah dikembalikan.
Dalam kes anda, anda telah menentukan jenis pemulangan fungsi kuasa sebagai c_float, tetapi anda belum menentukan jenis hujah. Jenis lalai untuk argumen ialah c_int, jadi Python mengandaikan bahawa argumen x ialah integer, yang tidak berlaku.
Untuk membetulkannya, anda harus menentukan jenis argumen sebagai c_float juga:
functions.power.argtypes = [c_float, c_int]
Selepas membuat perubahan ini, anda harus memperoleh output yang dijangkakan sebanyak 125.0 apabila memanggil fungsi kuasa daripada Python.
Ingat, kedua-dua jenis hujah dan pulangan perlu dinyatakan secara eksplisit untuk memastikan ctypes boleh menukar data dengan betul antara Python dan C. Kegagalan untuk menentukan atau salah mengeja salah satu daripada jenis ini boleh mengakibatkan tingkah laku yang tidak ditentukan dan tidak betul nilai dikembalikan.
Atas ialah kandungan terperinci Mengapa Fungsi C Saya Dipanggil daripada Python melalui ctypes Mengembalikan Nilai yang Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!