PyArg_ParseTuple默认参数

6
如果我有以下函数,并且可选参数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 *?显然,它是在C中存在的指针,因此可以说它是C变量,但它是一个指向Python对象的指针,因此也可以说它不算作C变量。
1个回答

6
它将保持为NULL。当然,指向结构体的指针是C语言对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接