检查 PyObject 是否为 None

Check if PyObject is None

我想检查一下我拥有的 PyObject 是否是 None。我天真地认为从函数返回的任何 None Pyobject * 都是 NULL 指针,但事实并非如此。

那么:如何检查我的 PyObject * 是否指向 None 对象?

我知道周围有像PyInt_Check(PyObject *)这样的宏,但是我找不到像PyNone_Check这样的宏。我以为我可以检查 PyObjectPy_None 之间的相等性,但事实证明我什至不知道如何与这个库进行相等性比较。

您可以使用 ==:

直接与 Py_None 进行比较
if (obj == Py_None)

来自docs

Note that the PyTypeObject for None is not directly exposed in the Python/C API. Since None is a singleton, testing for object identity (using == in C) is sufficient. There is no PyNone_Check() function for the same reason.