if, continuation and indentation

Jonathan Hartley tartley at tartley.com
Fri May 28 05:54:31 EDT 2010


On May 27, 1:57 pm, Jean-Michel Pichavant <jeanmic... at sequans.com>
wrote:
> 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
>
> One possible solution
>
>     if (
>             width == 0 and
>             height == 0 and
>             color == 'red' and
>             emphasis == 'strong' or
>             highlight > 100
>        ):
>         raise ValueError("sorry, you lose")
>
> JM  

I've always liked this, or even:

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


but my co-workers have uniformly gone bananas whenever I try it.



More information about the Python-list mailing list