我正在练习从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上的文档。有人可以指出一下 我在这里失踪了?
答案 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))