Assign If Expression
Sourcery refactoring id:
Replaces conditional assignment to a variable with an if expression
if condition: x = 1 else: x = 2
x = 1 if condition else 2
Python's conditional expression syntax is its version of the ternary operator. Using this syntax is definitely more concise, but it is one of the more controversial refactorings (along with list comprehensions). Some coders dislike these expressions and find them slightly harder to parse than writing them out fully.
Our view is that this is a definite improvement where the conditional expression is:
- short and fits on one line
- is not complex (no nested expressions or long chains of booleans)
Once the change is made there's only one statement where
x is defined as
opposed to having to read two statements plus the if-else lines. Similarly to
the comprehension example, when we're scanning the code we usually won't need to
know the details of how
x gets assigned, and can just see that it's being
assigned and move on.