Python中的条件运算符?

Abr*_*ile 81 python syntax

你知道Python是否支持像C++中的某些关键字或表达式来返回基于if条件的值,所有这些都在同一行(if用问号表示的C++ ?)

// C++
value = ( a > 10 ? b : c )
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 132

从Python 2.5开始,您可以:

value = b if a > 10 else c
Run Code Online (Sandbox Code Playgroud)

以前你必须做类似下面的事情,虽然语义不一样,因为短路效应丢失了:

value = [c, b][a > 10]
Run Code Online (Sandbox Code Playgroud)

还有另一个hack使用'和......或'但最好不要使用它,因为它在某些情况下会导致难以发现的错误.我甚至不会在这里写黑客,因为我认为最好不要使用它,但如果你愿意,你可以在维基百科上阅读它.

  • 我一直想知道他们拒绝了哪些符号"过于混乱"而赞成这一点. (5认同)
  • +1,即使使用lambda表达式,也可以使用这种'if'! (2认同)
  • @Neil,不确定你是指最终选择的语法,还是谁说"太混乱",但PEP总结了所有被拒绝的替代品以及其他信息:http://www.python.org/dev/peps/ PEP-0308 / (2认同)
  • 他们应该用`test?a:b`.引用拒绝的理由很薄弱. (2认同)