首页 > 后端开发 > C++ > 从 C/C 调用时如何提取 Python 函数的返回值?

从 C/C 调用时如何提取 Python 函数的返回值?

Linda Hamilton
发布: 2024-12-25 01:23:14
原创
925 人浏览过

How to Extract a Python Function's Return Value When Called from C/C  ?

从 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('.')");
登录后复制

导入并调用函数

  1. 导入Python模块:
PyObject* myModuleString = PyString_FromString("mytest");
PyObject* myModule = PyImport_Import(myModuleString);
登录后复制
  1. 获取参考函数:
PyObject* myFunction = PyObject_GetAttrString(myModule, "myabs");
登录后复制
  1. 构造函数参数:
PyObject* args = PyTuple_Pack(1, PyFloat_FromDouble(2.0));
登录后复制
  1. 调用函数:
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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板