我只是想检查我拥有的
PyObject
是否是None
。我天真地期望从函数返回的任何 None
Pyobject *
都是 NULL 指针,但情况似乎并非如此。
那么:如何检查我的
PyObject *
是否指向 None
对象?
我知道周围有像
PyInt_Check(PyObject *)
这样的宏,但我找不到像PyNone_Check
这样的宏。我以为我可以检查我的 PyObject
和 Py_None
之间的相等性,但事实证明我什至不知道如何与这个库进行相等比较。
您可以使用
Py_None
直接与 ==
进行比较:
if (obj == Py_None)
来自文档:
注意,
的PyTypeObject
并没有直接暴露在 Python/C API。 由于None
是单例,因此测试对象身份 (在 C 中使用None
)就足够了。 没有==
函数 同样的原因。PyNone_Check()
对于任何可能遇到此问题的人,从 3.10 开始,现在有 Py_IsNone() 函数,文档指出:
测试一个对象是否是
单例,与 Python 中的None
相同。x is None