【问题标题】:Conditional operator in Python? [duplicate]Python中的条件运算符? [复制]
【发布时间】:2011-01-12 14:37:27
【问题描述】:

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

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

【问题讨论】:

  • 那个C++操作符被称为“条件操作符”或者“三元操作符”。

标签: python syntax


【解决方案1】:

从 Python 2.5 开始,您可以这样做:

value = b if a > 10 else c

以前您必须执行以下操作,尽管语义不同,因为短路效果会丢失:

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

还有另一个 hack 使用 'and ... or' 但最好不要使用它,因为它在某些情况下会导致难以发现的错误。我什至不会在这里写hack,因为我认为最好不要使用它,但如果你愿意,你可以在Wikipedia 上阅读它。

【讨论】:

  • 我一直想知道他们拒绝了哪些“太混乱”的符号来支持这一点。
  • 感谢您的宝贵时间!太酷了!
  • +1,即使是 lambda 表达式,你也可以使用这种 'if'!
  • @Neil,不确定您是否指的是最终选择的语法,或者谁说“太混乱”,但 PEP 总结了所有被拒绝的替代方案以及其他信息:python.org/dev/peps/pep-0308
  • 他们应该使用test ? a : b。拒绝的原因很弱。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 2012-02-27
    • 2011-09-05
    • 2012-03-14
    • 1970-01-01
    • 2014-08-09
    • 2018-03-21
    • 2011-03-06
    • 2010-10-12
    相关资源
    最近更新 更多