[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