编程语言
首页 > 编程语言> > Python有三元条件运算符吗?

Python有三元条件运算符吗?

作者:互联网

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

解决方法:

是的,2.5版本是added.表达式语法是:

a if condition else b

评估第一个条件,然后根据条件的Boolean值评估和返回a或b中的一个.如果condition的计算结果为True,则会计算并返回a但忽略b,否则当b被计算并返回但忽略a时.

这允许短路,因为当条件为真时,仅评估a并且根本不评估b,但是当条件为假时,仅评估b并且根本不评估a.

例如:

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

请注意,条件语句是表达式,而不是语句.这意味着您不能在条件表达式中使用赋值语句或传递或其他语句:

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

但是,您可以使用条件表达式来分配变量,如下所示:

x = a if True else b

将条件表达式视为在两个值之间切换.当你处于“一个或另一个”的情况时它非常有用,但它没有做太多其他事情.

如果需要使用语句,则必须使用普通的if语句而不是条件表达式.

请记住,由于以下几个原因,一些Pythonist对此不满意:

>参数的顺序与经典条件的顺序不同? a:b来自许多其他语言的三元运算符(例如C,C,Go,Perl,Ruby,Java,Javascript等),当不熟悉Python的“惊人”行为的人使用它时可能会导致错误(它们可能会反转)参数顺序).
>有些人发现它“笨拙”,因为它与正常的思维流程相反(首先考虑条件然后考虑影响).
>文体原因. (虽然’inline if’可能非常有用,并且使您的脚本更简洁,但它确实会使您的代码变得复杂)

如果您在记住订单时遇到问题,请记住,当您大声朗读时,您(几乎)会说出您的意思.例如,如果b> 1,则x = 4. 8大声朗读9,如果b大于8则x将为4,否则为9.

官方文件:

> Conditional expressions
> Is there an equivalent of C’s ”?:” ternary operator?

标签:python-2-5,python,operators,ternary-operator,conditional-operator
来源: https://codeday.me/bug/20190910/1802112.html