【发布时间】:2012-04-11 19:33:25
【问题描述】:
如果我有以下函数并且未传递可选参数myobj,那么myobj 是保持NULL 还是设置为Py_None?
static PyObject * myfunc(PyObject * self, PyObject * args) {
PyObject * myobj = NULL;
if (!PyArg_ParseTuple(args, "|O", &myobj)) {
return NULL;
}
// ...
}
根据Parsing arguments and building values,
|表示 Python 参数列表中剩余的参数是可选的。与可选参数对应的 C 变量应初始化为其默认值 - 当未指定可选参数时,PyArg_ParseTuple() 不会触及相应 C 变量的内容。
这是否适用于PyObject *s?它显然是存在于 C 中的指针,因此可以说它是 C 变量,但它是指向 python 对象的指针,因此也可以说它不算作 C 变量。
【问题讨论】:
标签: python c python-c-api python-c-extension