Py_BuildValue:用bool制作元组?

时间:2014-01-19 19:06:06

标签: python python-extensions

我在docs中看到,我可以使用int(指定'i')构建元组值。我需要用bool制作元组,例如(True, 10)。我如何用bool制作这样的元组(需要什么说明符)?

1 个答案:

答案 0 :(得分:15)

该转换没有预定义的格式字符,但根据需要,通过将Py_TruePy_False对象插入元组来模拟一个字符很简单。例如:

int i = ...;
bool b = ...;
PyObject *tuple_with_bool = Py_BuildValue("Oi", b ? Py_True: Py_False, i);

另一个选择是使用PyBool_FromLong进行转换。在这种情况下,请记住使用N格式来说明PyBool_FromLong返回新的引用:

PyObject *tuple_with_bool = Py_BuildValue("Ni", PyBool_FromLong(b), i);