From: Colin J. Williams on
On 30-May-10 01:50 AM, Nathan Rice wrote:
> 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 <breamoreboy(a)yahoo.co.uk
> <mailto:breamoreboy(a)yahoo.co.uk>> wrote:
>
> On 30/05/2010 01:23, john wrote:
>
> On May 28, 10:37 am, "Colin J. Williams"<cjwilliam...(a)gmail.com
> <mailto:cjwilliam...(a)gmail.com>>
> wrote:
>
> On 28-May-10 05:54 AM, Jonathan Hartley wrote:
>
> On May 27, 1:57 pm, Jean-Michel
> Pichavant<jeanmic...(a)sequans.com
> <mailto:jeanmic...(a)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...(a)gmail.com
> <mailto:henri...(a)gmail.com>> <mailto:henri...(a)gmail.com
> <mailto:henri...(a)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
>
>

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")

Colin W.


From: Lie Ryan on
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...(a)gmail.com
>> <mailto:henri...(a)gmail.com>> <mailto:henri...(a)gmail.com
>> <mailto:henri...(a)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'))))
From: Colin J. Williams on
On 31-May-10 17:15 PM, Lie Ryan wrote:
> 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...(a)gmail.com
>>> <mailto:henri...(a)gmail.com>> <mailto:henri...(a)gmail.com
>>> <mailto:henri...(a)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'))))

You need to add "or highlight > 100"



From: Giacomo Boffi on
HH <henrikho(a)gmail.com> writes:

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


if (width == 0 and
height == 0 and
color == 'red' and
emphasis == 'strong' or
highlight > 100):

raise ValueError("sorry, you lose")

--
compro mobili vecchi - vendo mobili antichi
From: Aahz on
In article <mailman.663.1274969462.32709.python-list(a)python.org>,
Tim Chase <python.list(a)tim.thechases.com> wrote:
>
>While it's not PEP material, I tend to use the coding standards I
>learned working for Computer Sciences Corporation (10 yrs ago, so
>things may have changed) that mandated 2 levels of indentation
>for continued lines, turning the above into
>
> if (width == 0 and
> height == 0 and
> color == 'red' and
> emphasis == 'strong' or
> highlight> 100):
> # or the closing "):" on this line,
> # aligned with the previous line
> raise ValueError("sorry, you lose")

+1
--
Aahz (aahz(a)pythoncraft.com) <*> http://www.pythoncraft.com/

"If you don't know what your program is supposed to do, you'd better not
start writing it." --Dijkstra
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5
Prev: type error raise
Next: Minor annoyances with properties