Python三元运算符比较:`a if test else b` v.s. `test和a或b`

时间:2013-07-14 22:19:25

标签: python lambda conditional-operator

据我所知,Python有两个Ternary Operators

  1. a if test else b

  2. 测试和a或b

  3. 它们似乎达到了相同的目标,两者都可以用于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
    

    问题

    是否有任何情况我们应该使用一个而不是另一个?

1 个答案:

答案 0 :(得分: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