1

据我所知,Python 有两个Ternary Operators

  1. a if 测试 else b

  2. 测试和 a 或 b

似乎它们达到了相同的目标,并且都可以在 lambda 函数中使用。

>>> (lambda x: True if x > 0 else False)(5)
True
>>> (lambda x: True if x > 0 else False)(-5)
False

>>> (lambda x: x > 0 and True or False)(5)
True
>>> (lambda x: x > 0 and True or False)(-5)
False

问题

在任何情况下我们应该使用其中一种来代替另一种吗?

4

1 回答 1

0

它们可以产生不同的结果:

In [30]: (lambda x: x and 0 or 1)(True)
Out[30]: 1

In [31]: (lambda x: 0 if x else 1)(True)
Out[31]: 0
于 2013-07-14T22:28:14.240 回答