【发布时间】:2014-04-22 21:22:08
【问题描述】:
我一直在尝试用 C 扩展 python,到目前为止,基于 documentation,我在编写小型 C 函数并用 Python 扩展它方面取得了相当大的成功。
但是,我现在遇到了一个相当简单的问题 - 我无法找到解决方案。所以,我想做的是将double list 传递给我的C 函数。例如,要传递int,我执行以下操作:
int squared(int n)
{
if (n > 0)
return n*n;
else
return 0;
}
static PyObject*
squaredfunc(PyObject* self, PyObject* args)
{
int n;
if (!PyArg_ParseTuple(args, "i", &n))
return NULL;
return Py_BuildValue("i", squared(n));
}
这会将int n 毫无问题地传递给名为squared 的C 函数。
但是,如何将list 传递给C 函数?我确实尝试用谷歌搜索它并阅读文档,但到目前为止,我还没有找到任何有用的东西。
如果有人能指出我正确的方向,我将不胜感激。
谢谢。
【问题讨论】:
-
我认为您需要
"O"而不是"i"来表示您接受任意对象。 -
@mgilson:谢谢。但是,我该如何更改我的
int n声明以反映这一点?我应该只做double n[]吗? -
不,应该是
PyObject *lst;,或者我想的类似的东西。 -
@mgilson:我想知道是否有一个例子可以让我查看并尝试理解?再次感谢。
-
不确定。我知道的不多,我所知道的是阅读您已经链接的python源代码/文档。
标签: python c python-c-api python-c-extension