从 C/C 中调用的 Python 函数中提取返回值
从 C/C 调用自定义 Python 函数可以实现扩展功能,但提取返回值可能具有挑战性。这是使用 Python C-API 的解决方案。
Python 模块
创建一个 Python 模块 (mytest.py):
import math def myabs(x): return math.fabs(x)
C/C 代码
导入 python3 解释器在C/C(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 result = PyFloat_AsDouble(myResult);
用法
在您的 C/C 代码中,您现在可以使用提取的返回值(结果):
printf("Absolute value: %f\n", result);
注意:请记住在这些操作过程中检查是否有任何错误。有关C-API的更多详细信息,请参阅官方文档。
以上是从 C/C 调用时如何提取 Python 函数的返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!