2

我正在尝试编写一个函数来返回给定 PyObject 的真值。此函数应返回与 if() 真值测试相同的值——空列表和字符串为 False,等等。我一直在查看 python/include 标头,但没有发现任何似乎这样做的东西。我最接近的是 PyObject_RichCompare() ,其中 True 作为第二个值,但是对于“1”== True 返回 False 。是否有一个方便的功能可以做到这一点,或者我必须针对一系列类型进行测试并为每种可能的类型进行特殊情况测试?if() 的内部实现是做什么的?

4

2 回答 2

5

这不是吗,在 object.h 中:

PyAPI_FUNC(int) PyObject_IsTrue(PyObject *);

?

于 2009-04-24T22:00:07.550 回答
1

采用

int PyObject_IsTrue(PyObject *o)
如果对象 o 被认为为真,则返回 1,否则返回 0。这相当于 Python 表达式 not not o。失败时,返回-1。

(来自Python/C API 参考手册

于 2009-04-24T22:12:23.557 回答