程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Python有三元条件运算符吗?

发布于2019-08-19 21:34     阅读(2106)     评论(0)     点赞(27)     收藏(2)


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


解决方案


是的,它是在2.5版本添加的表达式语法是:

a if condition else b

首先condition进行评估,然后根据布尔值对它们中的任何一个进行评估ab评估并返回如果求值为,则进行求值并返回但忽略,否则何时求值并返回但忽略。conditionconditionTrueabba

这允许短路,因为何时condition为真仅a被评估并且b根本不被评估,但是当condition为假时仅b评估并且a根本不评估。

例如:

>>> '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

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

x = a if True else b

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

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


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

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

如果您在记住订单时遇到问题,请记住,当您大声朗读时,您(几乎)会说出您的意思。例如,x = 4 if b > 8 else 9大声朗读为x will be 4 if b is greater than 8 otherwise 9

官方文件:



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/48888/bcf33d69ca9aca3e2f45/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)