我刚读了一个SOF帖子,我看到很多人都在谈论Python的三元运算符。我不知道Python有一个三元运算符(三元运算符或条件表达式,无论你感到舒服),但它等效。所以Python三元运算符的语法是......
play_golf if sun_shines else stay_dumb
这里Python将在if之后测试块sun_shines
。如果块返回true
,它将执行块play_golf
之前,否则Python将在其他之后执行块stay_dumb
。
另一方面,我认为C&C的三元运算符更具可读性。
sun_shines ? play_golf : stay_dumb
这就像问一个问题sun_shines
?真正?好的,play_golf
否则为stay_dumb
。
现在我的问题是......
编辑:我想我得到了第二个问题的答案......
Python: true if true else false
C: true ? true : false
答案 0 :(得分:3)
现在我的问题是......
Python如何更加Pythonic? "简单比复杂更好"在我看来,这里失败了。如果我错了请澄清我。我想要 知道我错过了什么吗?
英文句子是
如果天气好的话,我们去海边,否则我们待在家里。
突出显示正确的字词,遗漏填充物:
gotobeach if weather == "nice" else stayathome
看起来很像有效的Python;)
我看到C和Python条件表达式的执行顺序完全不同。
没有。不是。
首先,解析该行,然后计算if之后的条件,然后评估其中一个语句。
答案 1 :(得分:1)
摘自定义条件表达式的PEP 308:
许多C派生语言使用以下语法:
Eric Raymond甚至实现了这一点。 BDFL拒绝了这一点 有几个原因:冒号已经在Python中有很多用途(甚至 虽然它实际上不会含糊不清,因为这个问题 mark需要匹配的冒号);对于不习惯C衍生的人 语言,很难理解。<condition> ? <expression1> : <expression2>
在PEP中你可以找到决定的动机,我发现这些是合适的,但这只是个人意见。
解析顺序与C没有区别,正如@Marcus Muller所说。