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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With