【发布时间】:2014-01-19 19:06:06
【问题描述】:
我在docs 中看到,我可以使用 int 构建元组值(指定“i”)。我需要用 bool 制作元组,例如(True, 10)。如何使用 bool 制作这样的元组(需要什么说明符)?
【问题讨论】:
我在docs 中看到,我可以使用 int 构建元组值(指定“i”)。我需要用 bool 制作元组,例如(True, 10)。如何使用 bool 制作这样的元组(需要什么说明符)?
【问题讨论】:
该转换没有预定义的格式字符,但通过将Py_True 或Py_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);
【讨论】: