if, continuation and indentation

Martin P. Hellwig martin.hellwig at dcuktec.org
Thu May 27 08:54:08 EDT 2010


On 05/27/10 13:22, HH wrote:
> I have a question about best practices when it comes to line wrapping/
> continuation and indentation, specifically in the case of an if
> statement.
>
> When I write an if statement with many conditions, I prefer to use a
> parenthesis around the whole block and get the implicit continuation,
> rather than ending each line with an escape character.  Thus, using
> the example from the style guide (http://www.python.org/dev/peps/
> pep-0008/) I would write:
>
>      if (width == 0 and
>          height == 0 and
>          color == 'red' and
>          emphasis == 'strong' or
>          highlight>  100):
>          raise ValueError("sorry, you lose")
>
> The problem should be obvious -- it's not easy to see where the
> conditional ends and the statement begins since they have the same
> indentation.  Part of the problem, I suppose, is that Emacs indents
> 'height' and the other lines in the conditional to 4 spaces (because
> of the parenthesis).  How do people deal with this situation?
>
> Thanks,
> Henrik

Well style guide aside (if pylint is happy with it, so am I) it depends 
on what I want to emphasize.

For example if it is really one long line with every item in it being 
equally important I do this:
     if width == 0 and height == 0 and color == 'red' and emphasis == 
'strong' \
                                                              or 
highlight > 100:
         raise ValueError("sorry, you lose")

In case it doesn't display correctly, I break up the line to nearest 
80th character and align the remaining part on the next line to the 
right to the 80th character.

If I want to emphasize visually a certain part I would do something like 
this:

     if width == 0 and height == 0 and color == 'red' \
        and emphasis == 'strong' or highlight > 100:
         raise ValueError("sorry, you lose")

But these are my preference, and since it is most likely that I have to
read again what I have written I write it in a way that it is most 
readable to me within the constraints of pylint.

-- 
mph




More information about the Python-list mailing list