小编shy*_*gon的帖子

将布尔值传递给Python C扩展的"正确"方法是什么?

这是python文档(http://docs.python.org/extending/extending.html)中的一个简单示例:

static PyObject *
spam_system(PyObject *self, PyObject *args)
{
    const char *command;
    int sts;

    if (!PyArg_ParseTuple(args, "s", &command))
        return NULL;
    sts = system(command);
    return Py_BuildValue("i", sts);
}
Run Code Online (Sandbox Code Playgroud)

如果我想将另一个布尔参数传递给函数 - 这是什么"正确"的方法呢?

似乎没有传递给PyArg_ParseTuple()的bool选项.所以我想到了以下几点:

  1. 读取一个整数并只使用该值(因为bool是int的子类)
  2. 在整数上调用PyBool_FromLong()
  3. 读取和对象并调用PyBool_Check()来验证它是一个bool
  4. 也许有一种方法可以获得任何类型的变量并获得其真值(即空数组将是假数据等),这是python函数通常所做的.

这些中哪一个更好?其他选择?

python python-c-api python-c-extension

23
推荐指数
3
解决办法
9521
查看次数

标签 统计

python ×1

python-c-api ×1

python-c-extension ×1