Parentheses aren’t necessary, I just prefer them for readability.
See python documentation on boolean operators for reference. Short story is a or b is an expression that evaluates to a if a is “truthy” else b. “Falsy” is empty strings/containers, 0 and None.
In all seriousness I very much dislike that zero is falsy in Python. It seems to me illogical and “cute”. Zero is a number much more than an empty container is a container.
Python, checking in …
return (a or b)
Parentheses aren’t necessary, I just prefer them for readability.
See python documentation on boolean operators for reference. Short story is
a or b
is an expression that evaluates toa
ifa
is “truthy” elseb
. “Falsy” is empty strings/containers,0
andNone
.You need to be careful here though. You might not intend for
0
andNone
to mean the same thing.So this won’t do the intended thing if a is 0.
Edit: Sorry I meant to reply to the parent comment, realising now you already write the exact same thing.
Also if a is an empty collection or str, or false.
Actually not sure what you mean by this. By my reckoning,
0
is definitely falsy in Python such thata or b
will evaluate tob
if a is zero.Well that’s part of the fun, right!?
In all seriousness I very much dislike that zero is falsy in Python. It seems to me illogical and “cute”. Zero is a number much more than an empty container is a container.
There was PEP 505 to add a none-aware operator, but it lost support.
That’s a shame, it would have been fitting in “modern” Python along with the walrus and static type system.