Python C API布尔对象 我使用Python C API 2.7.2和C++控制台应用程序。关于Python C API布尔对象有一个疑问

Python C API布尔对象 我使用Python C API 2.7.2和C++控制台应用程序。关于Python C API布尔对象有一个疑问,python,c++,python-c-api,python-c-extension,Python,C++,Python C Api,Python C Extension,我正在使用: PyObject* myVariable = Py_True; 我是否需要将myVariable与Py\u DECREF(myVariable)区分开来 Python C API文档说明:- Python真实对象。此对象没有方法。这是必须的 就引用计数而言,与任何其他对象一样进行处理 我搜索了这些问题,但找不到明确的答案 谢谢 就引用计数而言,它需要像对待任何其他对象一样对待 这意味着您在引用它时必须增加它 { Py_INCREF(Py_True); PyObject*

我正在使用:

PyObject* myVariable = Py_True;
我是否需要将myVariable与
Py\u DECREF(myVariable)
区分开来

Python C API文档说明:-

Python真实对象。此对象没有方法。这是必须的 就引用计数而言,与任何其他对象一样进行处理

我搜索了这些问题,但找不到明确的答案

谢谢

就引用计数而言,它需要像对待任何其他对象一样对待

这意味着您在引用它时必须增加它

{
  Py_INCREF(Py_True);
  PyObject* myVariable = Py_True;
当你处理它时,你必须减少它

  Py_DECREF(myVariable);
}

虽然它不是动态创建的,但必须进行引用计数,因为PyObject变量可以保存任何Python对象。否则,需要检查Py_True和其他分散在Python运行时中的特殊情况,以及使用API的任何C/C++代码。这将是混乱和容易出错的