5

我一直在阅读,包括Python 是否有三元条件运算符?. 据推测

result = a if a > b else b

比代码更好

result =  a > b and a or b

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

如果仅仅是可读性,那么它实际上只是一个偏好问题:有些人会喜欢一个,有些人会喜欢另一个。所以我的问题是:采用一种方式与另一种方式相比是否有一些真正的技术优势。

4

1 回答 1

14

result = a if a > b else b更好,因为它在语义上总是正确的。换句话说,无论a或的值如何,您总能从中得到您所期望的bresult = a > b and a or b将导致b每次 ifa是一个虚假值(0,None等)。

此外,由于a if x else b是一种专门定义的语言结构,因此其他 Python 开发人员通常更容易理解。最终,任何审查或维护您的代码的人都应该尽可能少地进行心理争论以了解发生了什么。

于 2013-01-31T14:19:50.560 回答