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

lea*_*ner 5 python

我一直在读这个地方,包括Python有三元条件运算符吗?.这应该是

result = a if a > b else b
Run Code Online (Sandbox Code Playgroud)

是比更好的代码

result =  a > b and a or b
Run Code Online (Sandbox Code Playgroud)

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

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

mul*_*ces 14

result = a if a > b else b更好,因为它始终在语义上是正确的.换句话说,无论任何一个a或哪个值,你总能得到你对它的期望b.result = a > b and a or b将导致b每次如果a是falsey值(0,None等).

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

  • 另外,当我看到第一个时,我可以立即读****而不必尝试破译一堆逻辑...... (3认同)