[Python-Dev] Re: accumulator display syntax

Paul Moore pf_moore at yahoo.co.uk
Fri Oct 17 16:34:21 EDT 2003


"Phillip J. Eby" <pje at telecommunity.com> writes:
> At 10:15 AM 10/17/03 -0700, Guido van Rossum wrote:

>>Which is why I didn't like the 'sum[x for x in S]' notation much.
>>Let's look for an in-line generator notation instead. I like
>>>> sum((yield x for x in S))
>>>>but perhaps we can make this work:
>>>> sum(x for x in S)

I like the look of this. In this context, it looks very natural.
> Offhand, it seems like the grammar might be rather tricky, but it
> actually does seem more Pythonic than the "yield" syntax, and it
> retroactively makes listcomps shorthand for 'list(x for x in s)'.
> However, if gencomps use this syntax, then what does:
>> for x in y*2 for y in z if y<20:
> ...
>> mean? ;)

It means you're trying to be too clever, and should use parentheses
:-)

> It's a little clearer with parentheses, of course, so perhaps they
> should be required:
>> for x in (y*2 for y in z if y<20):
> ...

I'd rather not require parentheses in general. Guido's example of
sum(x for x in S) looks too nice for me to want to give it up without
a fight. But I'm happy to have cases where the syntax is ambiguous, or
even out-and-out unparseable, without the parentheses. Whether it's
possible to express this in a way that Python's grammar can deal with,
I don't know.
Paul.
-- 
This signature intentionally left blank


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /