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