[Python-ideas] x=(yield from) confusion [was:Yet another alternative name for yield-from]

Greg Ewing greg.ewing at canterbury.ac.nz
Thu Apr 9 01:45:51 CEST 2009


Jacob Holm wrote:
> I think the best way of handling this is to add a read-only 
> property to generator objects holding the latest value yielded... The 
> property can be cleared when the frame is released, so there should be 
> no issues with that.

It will still keep the value alive longer than it would
be otherwise. Some people might take issue with that.

> def dropwhile(predicate, iterable):
>    it = iter(iterable)
>    v = next(it)
>    while predicate(v):
>        v = next(it)
>    return yield from it  # Starts by yielding the last value checked, 
> which is v.

In my view this constitutes a shared iterator, and is
therefore outside the scope of yield-from.

I also don't think this generalizes well enough to be
worth going out of our way to support. It only works
because you're making a "tail call" to the iterator,
which is a rather special case. Most itertools-style
functions won't have that property.

> What's not to like?

The fact that yield-from and/or generator behaviour
is being complexified to support things that are
outside the scope of my proposal.

This is why I want to keep focused on refactoring,
to prevent this kind of feature creep.

-- 
Greg





More information about the Python-ideas mailing list