如果我有以下函数并且myobj
未传递可选参数,是myobj
保留NULL
还是设置为Py_None
?
static PyObject * myfunc(PyObject * self, PyObject * args) {
PyObject * myobj = NULL;
if (!PyArg_ParseTuple(args, "|O", &myobj)) {
return NULL;
}
// ...
}
根据解析参数和构建值,
|
指示 Python 参数列表中的其余参数是可选的。与可选参数对应的 C 变量应初始化为其默认值——当未指定可选参数时,PyArg_ParseTuple() 不会触及相应 C 变量的内容。
这适用于PyObject *
s 吗?它显然是一个存在于 C 中的指针,因此可以说它是 C 变量,但它是指向 python 对象的指针,因此也可以说它不算作 C 变量。