如果 Python 没有三元条件运算符,是否可以使用其他语言构造来模拟一个?
是的,它是在 2.5 版中添加的。表达式语法为:
a if condition else b
第一condition被评估,则恰好中的任一个a或b进行评估并返回基于所述布尔值condition。如果condition计算为True,则a计算并返回但b被忽略,否则 whenb计算并返回但a被忽略。
condition
a
b
True
这允许短路,因为condition仅a评估when为真而b根本不评估,但condition仅b评估when为假而a根本不评估。
例如:
>>> 'true' if True else 'false' 'true' >>> 'true' if False else 'false' 'false'
请注意,条件是一个表达式,而不是一个语句。这意味着您不能在条件表达式中使用赋值语句pass或其他语句:
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 语句而不是条件表达式。
if
请记住,由于以下几个原因,一些 Pythonistas 不赞成它:
condition ? a : b
如果您在记住顺序时遇到问题,请记住,当您大声朗读时,您(几乎)说出了您的意思。例如,x = 4 if b > 8 else 9朗读为x will be 4 if b is greater than 8 otherwise 9。
x = 4 if b > 8 else 9
x will be 4 if b is greater than 8 otherwise 9