【问题标题】:Difference Between C and Python Ternary Operators [closed]C和Python三元运算符之间的区别[关闭]
【发布时间】:2015-07-16 13:16:39
【问题描述】:

我刚刚阅读了一个 SOF 线程,我看到很多人都在谈论 Python 的三元运算符。我不知道 Python 有一个等效的三元运算符(三元运算符或条件表达式,无论你觉得舒服)。所以Python三元运算符的语法是...

play_golf if sun_shines else stay_dumb

这里 Python 将在 if 之后测试块 sun_shines。如果块返回true,它将在之前执行块play_golf,否则Python将在否则之后执行块stay_dumb

另一方面,我猜 C 的三元运算符更具可读性。

sun_shines ? play_golf : stay_dumb

这就像问一个问题sun_shines?真的?好的,然后play_golf 否则stay_dumb

现在我的问题是……

  • Python 在这里的 Python 风格如何?在我看来,“简单胜于复杂”在这里失败了。如果我错了,请澄清我。我想知道我错过了什么?
  • 我看到 C 和 Python 条件表达式的执行顺序完全不同。那么它如何等效于C?在将多个语句折叠成一个表达式的方面?

编辑:我想我得到了第二个问题的答案......

Python: true if true else false

C: true ? true : false

【问题讨论】:

    标签: python c ternary-operator


    【解决方案1】:

    现在我的问题是……

    Python 在这里如何更 Pythonic?在我看来,“简单胜于复杂”在这里失败了。如果我错了,请澄清我。我想要 知道我错过了什么吗?

    英文句子是

    如果天气好,我们就去海滩,否则我们就呆在家里

    突出显示正确的单词,省略填充物:

    gotobeach if weather == "nice" else stayathome
    

    这看起来很像有效的 Python ;)

    C 和 Python 条件表达式的执行顺序完全不同。

    没有。不是。

    首先,解析行,然后评估 if 之后的条件,然后评估任一语句。

    【讨论】:

    • 事实上,在现实生活中,我们不会这样说话... gotobeach if weather == "nice" else stayathome 而是我说...如果天气好就去海滩 else呆在家里。那么我会问我的女儿... 天气好吗?好的,然后去海滩,否则呆在家里。不过你的意见没问题。我看到不同的人有不同的想法。 :)
    【解决方案2】:

    摘自定义条件表达式的PEP 308

    许多 C 派生语言都使用这种语法:

    <condition> ? <expression1> : <expression2>
    

    Eric Raymond 甚至实现了这一点。 BDFL 拒绝了这一点 几个原因:冒号在 Python 中已经有很多用途(甚至 虽然它实际上不会模棱两可,因为这个问题 标记需要一个匹配的冒号);对于不习惯 C 派生的人 语言,很难理解。

    您可以在 PEP 中找到做出决定的动机,我认为这些动机是合适的,但这只是个人意见。

    正如@Marcus Muller 所说,解析顺序与C 没有什么不同。

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2011-04-22
      • 2020-12-22
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多