2024-04-27 04:52:39 发布
网友
我正在查看hasattr内置函数的源代码,注意到有几行引起了我的兴趣:
Py_INCREF(Py_False); return Py_False; ... Py_INCREF(Py_True); return Py_True;
Py_False和{}不是全局值吗?仅仅出于好奇,Python为什么要为这些变量保留引用计数?在
Py_False
这是为了使所有的对象处理统一。如果我正在编写处理函数返回值的C代码,我必须增加和减少该对象的引用计数。如果函数返回True,我不想检查它是否是那些特殊的对象之一,从而知道是否要操作它的引用计数。我可以对所有物体一视同仁。在
通过将True和False(以及None,btw)与所有其他对象一样对待,C代码自始至终都要简单得多。在
这是为了使所有的对象处理统一。如果我正在编写处理函数返回值的C代码,我必须增加和减少该对象的引用计数。如果函数返回True,我不想检查它是否是那些特殊的对象之一,从而知道是否要操作它的引用计数。我可以对所有物体一视同仁。在
通过将True和False(以及None,btw)与所有其他对象一样对待,C代码自始至终都要简单得多。在
相关问题 更多 >
编程相关推荐