自从引入bool
以来,它一直是int
的子类,bool可以隐式地“转换”成整数:
>>> issubclass(bool, int)
True
>>> ['one', 'two'][False]
'one'
>>> ['one', 'two'][True]
'two'
>>> True/20
0.05
这是因为历史原因:与2.3API之前的版本兼容;据我所知,它一直保持在2.3到2.7之间。(这是从2011年起在this question中提到的)
但是,为什么在python3中仍然如此呢?我看不出有什么好处。而且没有理由为了向后兼容而保留它:Python3.0是一个破版;而且我不认为任何2.3之前的API仍然存在。在
从original bool PEP:
在同一文件的后面:
去除bools作为数字并不是一个预期的语言方向。吉多不认为这会使语言变得更好。在
有用的例子:两个布尔值0,
False
和1,True
可以表示任何二进制分区的2个部分。假设n个人回答m个问题,他们对每个问题的回答都被标记为“失败”或“通过”。我们创建一个包含n行和m(+1,表示id)列的数据表,代码fail/pass为0/1。然后,我们可以通过行和来计算每个问题的通过率,通过求和列来计算每个问题的通过次数。任何像样的分析软件都应该能够做到这一点或没有定制编程。在Python3开发:我参加了讨论,并确信有很多破坏兼容性的建议被拒绝,而不是被接受。每一次改变都要自己付出代价。在
相关问题 更多 >
编程相关推荐