2

在python解释器中,

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

有设计保证吗?

4

4 回答 4

10

True等于1并且False0

于 2012-05-11T13:19:30.090 回答
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
于 2012-05-11T13:22:30.200 回答
2

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

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

但是,如果您不指定 True 或 False,则 Language Design 保证 Booleans 子类 int 的值为 0、1、yes。(并且在py3中,True和False是保留字,所以不能做上面的)

于 2012-05-11T13:28:25.200 回答
1

根据文档

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

所以,是的,这是有保证的。

于 2012-05-11T13:21:16.533 回答