如果我有以下功能且未通过可选参数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 *
吗?它显然是一个存在于C中的指针,所以可以说它是一个C变量,但它是一个指向python对象的指针,所以也可以说它不算作C变量。
答案 0 :(得分:4)
它将保持为NULL。当然,指向结构的指针是C对象。