【发布时间】:2011-01-12 14:37:27
【问题描述】:
你知道 Python 是否支持像 C++ 中的某些关键字或表达式根据 if 条件返回值,都在同一行中(C++ if 用问号 ? 表示)
// C++
value = ( a > 10 ? b : c )
【问题讨论】:
-
那个C++操作符被称为“条件操作符”或者“三元操作符”。
你知道 Python 是否支持像 C++ 中的某些关键字或表达式根据 if 条件返回值,都在同一行中(C++ if 用问号 ? 表示)
// C++
value = ( a > 10 ? b : c )
【问题讨论】:
从 Python 2.5 开始,您可以这样做:
value = b if a > 10 else c
以前您必须执行以下操作,尽管语义不同,因为短路效果会丢失:
value = [c, b][a > 10]
还有另一个 hack 使用 'and ... or' 但最好不要使用它,因为它在某些情况下会导致难以发现的错误。我什至不会在这里写hack,因为我认为最好不要使用它,但如果你愿意,你可以在Wikipedia 上阅读它。
【讨论】:
test ? a : b。拒绝的原因很弱。
简单是最好的,适用于每个版本。
if a>10:
value="b"
else:
value="c"
【讨论】: