用Python模拟三元运算符的工作原理

时间:2019-05-16 15:02:00

标签: python python-3.x

我知道还有其他文章讨论如何在Python中模拟三元运算符,但是我在这里的问题不是我如何模拟它,但是为什么这些方式有效< / strong>。

众所周知,模拟三元运算符(条件:if_true?if_false)是由

完成的
a if condition else b

但是,至少还有另外两种方法可以实现这一目标,例如

(if_false, if_true)[test]

(expression) and (if_true) or (if_false)

例如

(4, 5)[4 > 5]

给予4

4 > 5 and 4 or 5

给予5

1 个答案:

答案 0 :(得分:4)

这是因为python中的booleanint的子类。并且True1,而False0。这被用作元组的索引。 所以,

(4, 5)[4 > 5]
>>> (4, 5)[False]
>>> (4, 5)[0]
>>> 4

您的第二种方法更难读:

4 > 5 and 4 or 5
>>> ((4 > 5) and 4) or 5
>>> (False and 4) or 5
>>> False or 5
>>> 5

这一事实基于这样一个事实,即andor基于真y或假y值会产生该值,而不是布尔值。