哪种Python三元操作更好,为什么?

时间:2013-01-31 14:16:14

标签: python

我一直在看这个地方,包括Does Python have a ternary conditional operator?。这应该是

result = a if a > b else b

是比

更好的代码
result =  a > b and a or b

但没有人解释过为什么。有人请详细说明吗?

如果仅仅是可读性,那么这只是一个偏好问题:有些人会喜欢这个,有些人会喜欢另一个。所以我的问题是:对于一种方式而不是另一种方式,是否有一些真正的技术优势。

1 个答案:

答案 0 :(得分:14)

result = a if a > b else b更好,因为它始终在语义上正确。换句话说,无论a还是b的价值如何,您始终会得到您对它的期望。如果result = a > b and a or b是假名值ba等,0每次都会生成None

此外,由于a if x else b是一个特定的defined language construct,因此其他Python开发人员通常更容易理解。最终,任何审查或维护代码的人都应该尽可能少地进行心理纠缠,以了解正在发生的事情。