python - 如何从 C 的 PyObject 类型的函数将值从 C 返回到 python?

标签 python c python-c-api python-c-extension python-extensions

我试图通过从 python 调用 C 文件来传递一个值,然后再次将该值从 C 返回给 python。

我的问题是如何做到这一点?可以使用 return Py_BuildValue(a+b) 之类的东西吗?

#include <Python.h>

static PyObject *
hello_world(PyObject *self, PyObject *noargs)
{
   int a=5,b=10;

   return Py_BuildValue(a+b); //This is Errorus.
}


static PyMethodDef
module_functions[] = {
    { "hello_world", hello_world, METH_NOARGS, "hello world method" },
    { NULL }
};



PyMODINIT_FUNC
inittesty2(void)
{
    Py_InitModule("testy2", module_functions);
}

最佳答案

指定值的格式:

return Py_BuildValue("i", a+b); // "i" for int

您可以找到更多格式单元 here (Py_BuildValue documentation) .

关于python - 如何从 C 的 PyObject 类型的函数将值从 C 返回到 python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34329970/

相关文章:

python - 是否有一个 NumPy C API 函数可以重置布局标志?

java - python 与 java 在 Web 服务开发上的区别?

python - 如何使用 Apache Beam Python 将输出写入动态路径

c++ - 4 个数字中的第二大...我收到错误为 "expected : before )"

c++ - 来自 CreateWindow/CreateDialog 的 HWND 可以从另一个线程获取消息吗?

python - Omnet++简单模块C++代码中python嵌入式代码中的Segmentation fault错误

python - 使用 C API 进行 Numpy 多切片?

C++ 数组操作(类似 python 的操作)

python - 属性错误: module 'serial' has no attribute 'Serial'

c - 在 c 中初始化字符串数组的最佳方法是什么?