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

Can I use the following as an alternative to the conditional operator in Python?

我发现下面的代码和 Python 中的条件运算符一样工作。

num1 = condition and val1 or val2

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

num1 = val1 if condition else val2

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

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

不,你不能。如果 val1falsy:

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

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

num1 = True and 0 or 2

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