给定两个PyObject*
s,我如何在 C API 中比较它们?
我想到了a == b
起初,但这显然是不正确的,因为它会比较指针而不是对象。我在找a == b
(not a is b
) Python C API 中的 Python 等效项。
您正在寻找PyObject_RichCompare
功能:
PyObject *result = PyObject_RichCompare(a, b, Py_EQ);
来自文档:
PyObject* PyObject_RichCompare(PyObject *o1, PyObject *o2, int opid)
返回值:新的引用。
比较以下值o1
and o2
使用指定的操作opid
,它必须是其中之一Py_LT
, Py_LE
, Py_EQ
, Py_NE
, Py_GT
, or
Py_GE
,对应于<
, <=
, ==
, !=
, >
, or >=
分别。这是
相当于 Python 表达式o1 op o2
, where op
是个
运算符对应于opid
。返回比较的值
成功,或NULL
失败时。
您可能还对PyObject_RichCompareBool功能,其作用与PyObject_RichCompare
但返回一个整数而不是PyObject *
。具体来说,1
返回 true,0
对于假的,以及-1
对于一个错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)