【问题标题】:Check if PyObject is None检查 PyObject 是否为 None
【发布时间】:2023-03-02 23:00:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: python c++ nonetype pyobject


    【解决方案1】:

    您可以直接使用==Py_None 进行比较:

    if (obj == Py_None)
    

    来自docs

    请注意,NonePyTypeObject 不会直接暴露在 Python/C API。 由于None 是一个单例,测试对象身份 (在 C 中使用 ==)就足够了。 没有 PyNone_Check() 函数 同样的原因。

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 1970-01-01
      • 2018-10-29
      • 2011-03-28
      • 1970-01-01
      • 2013-09-05
      • 2021-02-20
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多