【发布时间】:2018-07-17 17:04:38
【问题描述】:
如果我在 C 中扩展 Python,我可以使用 PyArg_ParseTuple() 之类的函数解析 Python 端提供的参数。但是,这只允许我指定标量参数或已知长度的元组参数。如何处理用户使用任意长度的元组从 Python 调用我的函数的情况?例如:
import foo
foo.bar([1, 2, 3])
foo.bar([4, 5])
这里,bar() 是用 C 定义的,它的参数使用 PyArg_ParseTuple() 解析,它将参数值复制到局部变量。我必须指定参数格式和将解析值复制到其中的地址。例如:
int i,j;
PyArg_ParseTuple(args, "i", &i)
/* or */
PyArg_ParseTuple(args, "(ii)", &i, &j);
但我想要的是这样的:
int *i;
int ni;
PyArg_ParseTuple(args, "(i...)", &ni, i);
其中 i 是一个数组,ni 是数组中元素的数量。这可能吗?
【问题讨论】: