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

23 投票
1 回答
1965 浏览
提问于 2025-04-15 14:30

我在查看内置函数hasattr的源代码时,发现了几行让我感兴趣的内容:

Py_INCREF(Py_False);
return Py_False;

...

Py_INCREF(Py_True);
return Py_True;

难道Py_FalsePy_True不是全局值吗?出于好奇,为什么Python要对这些变量保持引用计数呢?

1 个回答

23

这样做是为了让所有对象的处理方式统一。如果我在写C语言代码,处理一个函数的返回值时,我需要增加和减少那个对象的引用计数。如果函数返回的是True,我就不想去检查它是不是某个特殊对象,以决定是否要调整它的引用计数。这样我就可以把所有对象都当成一样来对待。

通过把True和False(还有None)当成和其他所有对象一样来处理,整个C语言代码就变得简单多了。

撰写回答