DEV Community

Mike Lezhnin
Mike Lezhnin

Posted on

TIL sub for A if X else B

Welp, today instead of the usual

value = a if condition else b
Enter fullscreen mode Exit fullscreen mode

on the internet I saw

value = condition and a or b
Enter fullscreen mode Exit fullscreen mode

It shall be noted that those are not equivalent -
if condition is False we do get value = b, but if condition is True we get value = a or b, which is a only under certain circumstances.
So this method really only works for simple cases with a not being an "empty" version of its type - since 0 or 5 == 5 and '' or 'qwe' == 'qwe'.

Still, looks fancy and works sometimes. I am not a huge fan of how the construct a if c else b looks like, so I might start doing this in my code.

Top comments (1)

Collapse
 
bezirganyan profile image
Grigor Bezirganyan

I would avoid doing the second option, as the first one is more readable. You can basically read it like a sentence, while in the second one it may not be clear if it has to return one of the options or a boolean, when you are not familiar with the syntax.

According to the zen of python:

Readability counts