如何使Python C函数调用乘以2个浮点数?

时间:2016-04-19 16:09:35

标签: python

我正在练习从python(2.7)进行C函数调用。

我已经成功完成了https://docs.python.org/2/extending/extending.html

上列出的示例

现在我调整此示例以乘以2个浮点数并返回结果。我在我的c源文件中实现了以下功能。

static PyObject *demo_multiply(PyObject *self, PyObject *args)
{
    const float *command;
    float x;

    if (!PyArg_ParseTuple(args, "f", &command)) return NULL;
    x = command[0] * command[1];
    return Py_BuildValue("f", x);
}

我在python中调用此函数的方法如下:

print(demo.multiply((2.0, 4.0))

这导致以下输出:

  

回溯(最近一次呼叫最后一次):文件" main.py",第12行,in          print(demo.multiply((2.0,4.0)))TypeError:需要一个float

显然我的实施存在一些错误,但我无法弄清楚它的相信之处 我已经非常清楚地关注了docs.python.org上的文档。有人可以指出一下 我在这里失踪了?

1 个答案:

答案 0 :(得分:3)

感谢用户user2357112评论,我已经解决了这个问题。我已经在这里发布了代码,用于遇到类似问题的人。

(C)

static PyObject *demo_multiply(PyObject *self, PyObject *args)
{
    float y[2];
    float x;

    if (!PyArg_ParseTuple(args, "ff", &(y[0]), &(y[1]))) return NULL;
    x = y[0] * y[1];
    return Py_BuildValue("f", x);
}

(Python)的

print(demo.multiply(2.0, 4.0))