我可以使用以下替代 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
出于两个原因,我建议您不要这样做。
- If 条件语句清楚地传达了您的意图,这有助于提高代码的可读性。
- 这种行为在不同 python 版本(过去或未来)之间可能不一致,如果您使用它,您可能会以非常微妙的方式破坏您的代码。
不,你不能。如果 val1
是 falsy:
,它将无法正常工作
>>> 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。
我发现下面的代码和 Python 中的条件运算符一样工作。
num1 = condition and val1 or val2
我可以用它代替以下内容吗?
num1 = val1 if condition else val2
出于两个原因,我建议您不要这样做。
- If 条件语句清楚地传达了您的意图,这有助于提高代码的可读性。
- 这种行为在不同 python 版本(过去或未来)之间可能不一致,如果您使用它,您可能会以非常微妙的方式破坏您的代码。
不,你不能。如果 val1
是 falsy:
>>> 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。