Python是否有三元条件运算符?

如果Python没有三元条件运算符,是否有可能使用其他语言构造来模拟一个条件运算符?


是的,它是在2.5版本中添加的。
语法是:

a if condition else b

评估第一个condition ,然后根据condition的布尔值返回ab
如果condition计算结果为真a则返回b ,否则返回b

例如:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

请注意,条件是表达式,而不是语句。 这意味着您不能在条件中使用分配或pass或其他语句:

>>> pass if False else x = 3
  File "<stdin>", line 1
    pass if False else x = 3
          ^
SyntaxError: invalid syntax

在这种情况下,您必须使用正常的if语句而不是条件语句。


请记住,它是由一些Pythonistas皱起了几个原因:

  • 参数的顺序与许多其他语言(如C,Ruby,Java等)不同,如果不熟悉Python的“令人惊讶”行为的人使用它(它们可能会颠倒顺序),可能会导致错误。
  • 有些人认为它“笨拙”,因为它违背了正常的思想流动(首先考虑条件,然后考虑效果)。
  • 文体原因。
  • 如果您在记忆顺序时遇到问题,请记住,如果您大声读出它,您(几乎)会说出您的意思。 例如, x = 4 if b > 8 else 9 ,则x = 4 if b > 8 else 9被大声朗读, x will be 4 if b is greater than 8 otherwise 9

    官方文件:

  • 条件表达式
  • 是否有相当于C的“?:”三元运算符?

  • 你可以索引到一个元组中:

    (falseValue, trueValue)[test]
    

    test需要返回True或False。
    始终将其实施为:

    (falseValue, trueValue)[test == True]
    

    或者您可以使用内置的bool()来确保一个布尔值:

    (falseValue, trueValue)[bool(<expression>)]
    

    对于2.5之前的版本,有一个诀窍:

    [expression] and [on_true] or [on_false]
    

    on_true具有假布尔值时,它可能会给出错误的结果
    虽然它确实有评估表达从左到右的好处,在我看来这更清楚。

    1.是否有相当于C的“?:”三元运算符?

    链接地址: http://www.djcxy.com/p/105.html

    上一篇: Does Python have a ternary conditional operator?

    下一篇: How do I include a JavaScript file in another JavaScript file?