为什么Python将引用计数保持为False和True?

时间:2009-09-22 14:33:04

标签: python reference-counting python-c-api

我正在查看hasattr内置函数的源代码,并注意到引起我兴趣的几行:

Py_INCREF(Py_False);
return Py_False;

...

Py_INCREF(Py_True);
return Py_True;

不是Py_FalsePy_True全局值吗?出于纯粹的好奇心,为什么Python保留这些变量的引用计数?

1 个答案:

答案 0 :(得分:22)

使所有对象处理均匀。如果我正在编写处理函数返回值的C代码,我必须递增和递减该对象的引用计数。如果函数返回True,我不想检查它是否是那些特殊对象之一,知道是否操纵它的引用计数。我可以完全相同地处理所有对象。

通过将True和False(和None,btw)视为与所有其他对象相同,C代码在整个过程中更加简单。