这样的代码看起来很奇怪,
x = 1 if condition else 5
大多数程序员习惯使用模式<condition>
:<on-true>
:<on-false>
。为什么python以其三元运算符打破这个众所周知的已建立的模式?为什么不这样:
x = if condition then 1 else 5
这种设计决定是否有原因?
答案 0 :(得分:4)
Python更像英语,所以它应该像这样阅读
one, if condition is Truthy, else 5
中详细了解相关信息
另外,请阅读由BDFL自己撰写的PEP 308。
经过长时间的讨论,我决定添加一个条件快捷方式 表达式Python 2.5。
语法将是
A if C else B
首先评估C;如果是真的,则评估A给出 结果,否则,评估B得出结果。
优先顺序是你可以写
x = A if C else B x = lambda: A if C else B x = A if C else B if D else E
但你必须写
if (A if C else B): [x for x in seq if (A if C else B)] A if (X if C else Y) else B (A if C else B) if D else E
请注意,所有这些都是故意丑陋的。 :)
一般来说,&#39;如果&#39;和&#39;其他&#39;绑定不如除了之外的所有东西 拉姆达。
我们将调整内容的语法,如果&#39;不允许 拉姆达;目前
if lambda: x:
被接受但很无用(它总是如此)所以这将是 禁止。
火焰,请求重新考虑等等,/ dev / null。
恭喜你接受了。
它还是我的语言! : - )
答案 1 :(得分:1)
原因可归纳为,因为Guido said so :
语法将是
A if C else B
[...]
火焰,请求重新考虑等等,/ dev / null。
恭喜你接受了。
它还是我的语言! : - )
他削减了Gordian knot that is PEP 308;每个变种都有他们的支持者和批评者,以及他在这里挑选的it was his personal preference。
Python不是C,它是Python,它是Guido的Python。
就个人而言,我同意这个选择,顺便说一句。我喜欢语法。