"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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4