bool的Python max()和min()值

时间:2012-05-11 13:18:34

标签: python

在python解释器中,

min(True,False)==False
max(True,False)==True

设计得到保证吗?

4 个答案:

答案 0 :(得分:10)

True等于1False等于0

答案 1 :(得分:3)

似乎,至少在CPython中,bool子类int。因此,您可以这样做:

>>> abs(False)
0
>>> abs(True)
1

>>> False < True
True
>>> True > False
True

我猜maxmin适用于比较运算符:

>>> cmp(False, True)
-1
>>> cmp(True, False)
1
>>> cmp(False, False)
0
>>> cmp(True, True)
0

答案 2 :(得分:2)

在python 2.x中,这不能保证,因为你可以覆盖True和False:

>>> False = 23
>>> max(True, False)
23

但是如果你没有指定为True或False,那么语言设计保证Booleans使用值0,1,是的子类int。 (在py3中,True和False是保留字,所以你不能这样做)

答案 3 :(得分:1)

根据the doc

  

在数字上下文中(例如,当用作算术运算符的参数时),它们的行为分别与整数0和1相似。

所以,是的,这是有把握的。