Python中的条件运算符是什么?

121

你知道Python是否支持像C++那样,在同一行中基于if条件返回值的关键字或表达式吗?(C++中的if表达式使用问号?

// C++
value = ( a > 10 ? b : c )

5
该C++运算符被称为“条件运算符”或“三目运算符”。 - Roger Pate
2个回答

204
value = b if a > 10 else c

对于 Python 2.4 及以下版本,你需要执行类似以下的操作,尽管语义并不相同,因为短路效应丧失了:

value = [c, b][a > 10]

还有一种使用 'and ... or' 的技巧,但最好不要使用它,因为在某些情况下会产生不良行为,可能会导致难以找到的错误。我甚至不会在这里写出这种技巧,因为我认为最好不要使用它,但如果您想了解更多信息,可以在维基百科上阅读。


7
我一直想知道,为了使用现在这个符号,他们拒绝了哪些他们认为“过于混乱”的符号。 - anon
2
+1,你甚至可以在lambda表达式中使用这种类型的“if”! - Serge
2
@Neil,我不确定你是在指最终选择的语法还是谁说“太复杂了”,但PEP概述了所有被拒绝的备选方案以及其他信息:http://www.python.org/dev/peps/pep-0308/。 - Peter Hansen
11
他们本应该使用test ? a : b。对于其被拒绝的原因所列举的理由不足以支撑。 - Evgeni Sergeev
+1!不要和我们分享“不推荐”的方法 ;) - Mercury

0

简单最好,适用于每个版本。

if a>10: 
    value="b"
else: 
    value="c"

可悲的是,这个块形式的 if a then b else c 和函数式的立即形式 b if a else c 在彼此之间完全颠倒了(Python 中的倒置 if 与几乎所有其他编程语言的立即 if 相反)。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接