Assignment with "or" in python
No, it's a common practice. It's only considered bad style for expressions that are considerably longer than yours.
I also feel a bit unconfortable using that kind of expressions. In Learning Python 4ed it is called a "somewhat unusual behavior". Later Mark Lutz says:
...it turns out to be a fairly common coding paradigm in Python: to select a nonempty object from among a fixed-size set, simply string them together in an or expression. In simpler form, this is also commonly used to designate a default...
In fact, they produce concise one-line expressions that help to eliminate line noise from the code.
This behavior is the basis for a form of the if/else ternary operator:
A = Y if X else Z
The primary danger of doing something like this is the possibility that (in the second case) some_variable
is False but not None (the integer 0
, for instance) and you don't want to end up with y
equal to None in that case.