On Fri, Oct 14, 2016 at 08:29:28PM +1300, Greg Ewing wrote:
> Steven D'Aprano wrote:
> So why would yield *t give us this?
> > yield a; yield b; yield c
> >By analogy with the function call syntax, it should mean:
> > yield (a, b, c)
> This is a false analogy, because yield is not a function.
Neither are list comprehensions or sequence unpacking in the context of
a, b, c = *t
Not everything is a function. What's your point?
As far as I can see, in *every* other use of sequence unpacking, *t is
conceptually replaced by a comma-separated sequence of items from t. If
the starred item is on the left-hand side of the = sign, we might call
it "sequence packing" rather than unpacking, and it operates to collect
unused items, just like *args does in function parameter lists.
Neither of these are even close to what the proposed [*t for t in
iterable] will do.
> >>However, consider the following spelling:
> >> l = [from f(t) for t in iterable]
> That sentence no verb!
> In English, 'from' is a preposition, so one expects there
> to be a verb associated with it somewhere. We currently
> have 'from ... import' and 'yield from'.
> But 'from f(t) for t in iterable' ... do what?
I'm not married to this suggestion. It could be written
[MAGIC!!! HAPPENS!!! HERE!!! t for t in iterable] if you prefer.
The suggestion to use "from" came from Sjoerd Job Postmus, not me.
Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/