Styling multi-line conditions in 'if' statements? [closed]
You don't need to use 4 spaces on your second conditional line. Maybe use:
if (cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val3' and cond4 == 'val4'): do_something
Also, don't forget the whitespace is more flexible than you might think:
if ( cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val3' and cond4 == 'val4' ): do_somethingif (cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val3' and cond4 == 'val4'): do_something
Both of those are fairly ugly though.
Maybe lose the brackets (the Style Guide discourages this though)?
if cond1 == 'val1' and cond2 == 'val2' and \ cond3 == 'val3' and cond4 == 'val4': do_something
This at least gives you some differentiation.
Or even:
if cond1 == 'val1' and cond2 == 'val2' and \ cond3 == 'val3' and \ cond4 == 'val4': do_something
I think I prefer:
if cond1 == 'val1' and \ cond2 == 'val2' and \ cond3 == 'val3' and \ cond4 == 'val4': do_something
Here's the Style Guide, which (since 2010) recommends using brackets.
I've resorted to the following in the degenerate case where it's simply AND's or OR's.
if all( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):if any( [cond1 == 'val1', cond2 == 'val2', cond3 == 'val3', cond4 == 'val4'] ):
It shaves a few characters and makes it clear that there's no subtlety to the condition.
Someone has to champion use of vertical whitespace here! :)
if ( cond1 == val1 and cond2 == val2 and cond3 == val3 ): do_stuff()
This makes each condition clearly visible. It also allows cleaner expression of more complex conditions:
if ( cond1 == val1 or ( cond2_1 == val2_1 and cond2_2 >= val2_2 and cond2_3 != bad2_3 ) ): do_more_stuff()
Yes, we're trading off a bit of vertical real estate for clarity. Well worth it IMO.