C/C で呼び出された Python 関数からの戻り値の抽出
C/C からカスタム Python 関数を呼び出すと、拡張機能が可能になります。ただし、戻り値を抽出するのは困難な場合があります。ここでは、Python C-API を使用したソリューションを示します。
Python モジュール
Python モジュール (mytest.py) を作成します。
import math def myabs(x): return math.fabs(x)
C/Cコード
C/C で python3 インタープリターをインポートします (test.cpp):
#include <Python.h> int main() { Py_Initialize(); PyRun_SimpleString("import sys; sys.path.append('.')");
関数のインポートと呼び出し
PyObject* myModuleString = PyString_FromString("mytest"); PyObject* myModule = PyImport_Import(myModuleString);
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs");
PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0));
PyObject* myResult = PyObject_CallObject(myFunction, args);
戻り値の抽出
結果を double に変換します:
double result = PyFloat_AsDouble(myResult);
使用法
C/C コードでは、抽出された戻り値 (結果) を使用できるようになりました:
printf("Absolute value: %f\n", result);
注: これらの操作中にエラーがないか必ず確認してください。 C-API の詳細については、公式ドキュメントを参照してください。
以上がC/C から呼び出されたときに Python 関数の戻り値を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。