这是 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);
}
如果我想向函数传递一个额外的布尔参数 - 什么是“正确”的方法?
似乎没有布尔选项可以传递给 PyArg_ParseTuple()。所以我想到了以下几点:
- 读取一个整数并只使用该值(因为 bool 是 int 的子类)
- 对整数调用 PyBool_FromLong()
- 读取和对象并调用 PyBool_Check() 来验证它是一个布尔值
- 也许有一种方法可以获取任何类型的变量并获取其真值(即空数组将是错误的等),这就是 python 函数通常所做的。
这些中的任何一个更可取吗?其他选择?