PyArg_ParseTuple默认参数

时间:2012-04-11 19:33:25

标签: python c python-c-api python-c-extension

如果我有以下功能且未通过可选参数myobjmyobjNULL还是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变量。

1 个答案:

答案 0 :(得分:4)

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