Py_BuildValue:用bool制作元组?

Pro*_*020 9 python python-extensions

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

use*_*342 15

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

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

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

PyObject *tuple_with_bool = Py_BuildValue("Ni", PyBool_FromLong(b), i);
Run Code Online (Sandbox Code Playgroud)