我一直在看这个地方,包括Does Python have a ternary conditional operator?。这应该是
result = a if a > b else b
是比
更好的代码result = a > b and a or b
但没有人解释过为什么。有人请详细说明吗?
如果仅仅是可读性,那么这只是一个偏好问题:有些人会喜欢这个,有些人会喜欢另一个。所以我的问题是:对于一种方式而不是另一种方式,是否有一些真正的技术优势。
答案 0 :(得分:14)
result = a if a > b else b
更好,因为它始终在语义上正确。换句话说,无论a
还是b
的价值如何,您始终会得到您对它的期望。如果result = a > b and a or b
是假名值b
,a
等,0
每次都会生成None
。
此外,由于a if x else b
是一个特定的defined language construct,因此其他Python开发人员通常更容易理解。最终,任何审查或维护代码的人都应该尽可能少地进行心理纠缠,以了解正在发生的事情。