检查 PyObject 是不是为 None
Posted
技术标签:
【中文标题】检查 PyObject 是不是为 None【英文标题】:Check if PyObject is None检查 PyObject 是否为 None 【发布时间】:2015-06-26 06:58:02 【问题描述】:我只想检查我拥有的PyObject
是否为None
。我天真地以为从函数返回的任何 None
Pyobject *
都是 NULL 指针,但事实并非如此。
那么:如何检查我的 PyObject *
是否指向 None
对象?
我知道有像PyInt_Check(PyObject *)
这样的宏,但是我找不到像PyNone_Check
这样的宏。我以为我可以检查我的 PyObject
和 Py_None
之间的相等性,但结果我什至不知道如何与这个库进行相等性比较。
【问题讨论】:
【参考方案1】:您可以直接使用==
与Py_None
进行比较:
if (obj == Py_None)
来自docs:
请注意,
None
的PyTypeObject
不会直接暴露在 Python/C API。 由于None
是一个单例,测试对象身份 (在 C 中使用==
)就足够了。 没有PyNone_Check()
函数 同样的原因。
【讨论】:
以上是关于检查 PyObject 是不是为 None的主要内容,如果未能解决你的问题,请参考以下文章
确定 PyObject* 是不是为 PyLongDoubleScalarObject (numpy)
在rust-cpython中将Rust结构转换为PyObject