我可以使用以下内容代替Python中的条件运算符吗?

时间:2018-10-20 16:09:42

标签: python conditional

我发现以下代码的工作方式类似于Python中的条件运算符。

num1 = condition and val1 or val2

我可以用它代替以下内容吗?

num1 = val1 if condition else val2

3 个答案:

答案 0 :(得分:2)

出于两个原因,我建议您不要这样做。

  1. 如果条件语句清楚地传达了您的意图,则有助于提高代码的可读性。
  2. 在不同的python版本(过去或将来)中,这种行为可能不一致,如果使用此行为,则可能会以非常微妙的方式破坏代码。

答案 1 :(得分:2)

不,你不能。如果val1虚假

,它将无法正常工作
>>> 0 if True else 1
0
>>> True and 0 or 1
1

答案 2 :(得分:2)

您建议的第一个代码并不总是与第二个代码一样,因为这里有一个反例,其中condition为真,val1为0,val2为2

num1 = True and 0 or 2

num1等于赋值后的2,因为在逻辑表达式的上下文中,0被评估为false。在第二个代码中,结果将改为0。