简体   繁体   中英

Which Python ternary operation is better and why?

I have been reading all over the place, including Does Python have a ternary conditional operator? . It is supposed that

result = a if a > b else b

is better code than

result =  a > b and a or b

But no one ever explains why. Will someone please elaborate?

If it's mere readability, then it's really just a matter of preference: some people will like the one and some people will like the other. So my question is: is there some really technical advantage for going one way versus the other.

result = a if a > b else b is better because it is always semantically correct. In other words, you will always get what you expect from it, regardless of the value of either a or b . result = a > b and a or b will result in b every time if a is a falsey value ( 0 , None , etc).

Additionally, since a if x else b is a specifically defined language construct , it will typically be easier for other Python developers to understand. Ultimately, anyone reviewing or maintaining your code should have to do as little mental wrangling as possible to understand what's going on.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM