你知道Python是否支持像C++那样,在同一行中基于if
条件返回值的关键字或表达式吗?(C++中的if
表达式使用问号?
)
// C++
value = ( a > 10 ? b : c )
value = b if a > 10 else c
对于 Python 2.4 及以下版本,你需要执行类似以下的操作,尽管语义并不相同,因为短路效应丧失了:
value = [c, b][a > 10]
还有一种使用 'and ... or' 的技巧,但最好不要使用它,因为在某些情况下会产生不良行为,可能会导致难以找到的错误。我甚至不会在这里写出这种技巧,因为我认为最好不要使用它,但如果您想了解更多信息,可以在维基百科上阅读。
test ? a : b
。对于其被拒绝的原因所列举的理由不足以支撑。 - Evgeni Sergeev简单最好,适用于每个版本。
if a>10:
value="b"
else:
value="c"
if a then b else c
和函数式的立即形式 b if a else c
在彼此之间完全颠倒了(Python 中的倒置 if
与几乎所有其他编程语言的立即 if
相反)。 - undefined