if, continuation and indentation

Lie Ryan lie.1296 at gmail.com
Mon May 31 17:15:05 EDT 2010


On 05/31/10 05:10, Colin J. Williams wrote:
> On 30-May-10 01:50 AM, Nathan Rice wrote:
>>             On 27-May-10 08:48 AM, Xavier Ho wrote:
>>              >  On 27 May 2010 22:22, HH<henri... at gmail.com
>>             <mailto:henri... at gmail.com>> <mailto:henri... at gmail.com
>>             <mailto:henri... at 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 :)
>>
>>
> 
> Perhaps the arrangement below shows the matching a little better than
> the Xav suggestion.  The main point is that, to me, the tuple shows the
> item by item matching better than a series of and clauses:
> 
> # tif.py
> 
> (width, height, color, emphasis)= 0, 0, 'red', 'strong'
> highlight= 99
> if (width, height, color, emphasis) ==      \
>    (    0,     0,  'red', 'strong') or highlight>  100:
>        raise ValueError("sorry, you lose")

How about:

all(a == b for a,b in ((width, 0), (height, 0), (color, 'red'),
(emphasis, 'strong'))))



More information about the Python-list mailing list