I prefer to just break such things into multiple lines. You're doing that already anyhow, it's not much of a speed hit, and it makes exactly what you're testing explicit. If I break a statement onto multiple lines I only use parenthesis, and that is as a last resort. In my opinion there's almost always some combination of variable assignments and lambda expressions that uses fewer lines and is clearer.
is_correct_style = width == 0 and height == 0 and color == 'red' if (is_correct_style and emphasis == 'strong') or highlight > 100: On Sat, May 29, 2010 at 8:59 PM, Mark Lawrence <breamore...@yahoo.co.uk>wrote: > On 30/05/2010 01:23, john wrote: > >> On May 28, 10:37 am, "Colin J. Williams"<cjwilliam...@gmail.com> >> wrote: >> >>> On 28-May-10 05:54 AM, Jonathan Hartley wrote: >>> >>> On May 27, 1:57 pm, Jean-Michel Pichavant<jeanmic...@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. >>>> >>> >>> I liked: >>> >>> On 27-May-10 08:48 AM, Xavier Ho wrote: >>> > On 27 May 2010 22:22, HH<henri...@gmail.com> <mailto: >>> henri...@gmail.com>> wrote: >>> >>> > >>> > if (width == 0 and >>> > height == 0 and >>> > color == 'red' and >>> > emphasis == 'strong' or >>> > highlight> 100): >>> > raise ValueError("sorry, you lose") >>> > >>> > >>> > I've gotta say - I've bumped into this problem before, and I'm sure >>> many >>> > other have - this is a valid question. It just hasn't bothered me >>> enough >>> > to ask... >>> > >>> > Correct me if I'm wrong, but I think the following is equivalent, and >>> > looks better. Although this won't fix all ugly cases in that >>> problem.. >>> > >>> > if (width, height, color, emphasis) == (0, 0, 'red', 'strong') or >>> > highlight> 100: >>> > raise ValueError("sorry, you lose") >>> > >>> > Cheers, >>> > Xav >>> >>> but nobody commented. >>> >>> Colin W. >>> >> >> Colin: >> Sure, you can do it that way. IMO, though, the OP was wrong, and so >> is the PEP. Source code is meant to communicate. So it must transmit >> the correct information to the computer; it also must inform your >> coworkers. That means that you have a responsibility to care what >> they think, though you privately have your opinions. Another reason >> the PEP is faulty in this circumstance is that a misplaced backslash, >> or a missing one, is easily found and fixed. A misplaced parentheses, >> or just one of a pair, will transform your source code into something >> which may compile and then give faulty results: a disaster. >> So keep it simple, and make it legible. >> Yours, >> John >> > > IMHO complete garbage, if your editor doesn't show misplaced or missing > parenthesis by highlighting you're using the wrong editor :) > > Regards. > > Mark Lawrence. > > > > -- > http://mail.python.org/mailman/listinfo/python-list >
-- http://mail.python.org/mailman/listinfo/python-list