【问题标题】:PyArg_ParseTuple default argumentPyArg_ParseTuple 默认参数
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 2016-01-06
      • 1970-01-01
      • 2010-12-01
      • 2011-08-23
      • 2016-08-30
      • 1970-01-01
      相关资源
      最近更新 更多