[Python-ideas] x=(yield from) confusion [was:Yet another alternative name for yield-from]
jimjjewett at gmail.com
Fri Apr 3 18:48:38 CEST 2009
On 4/3/09, Nick Coghlan <ncoghlan at gmail.com> wrote:
> Greg tried to clarify this a bit already, but I think Jacob's averager
> example is an interesting case where it makes sense to both yield
> multiple times and also "return a value".
> def averager(start=0):
> # averager that maintains a running average
> # and returns the final average when done
> count = 0
> exc = None
> sum = start
> while 1:
> avg = sum / count
> val = yield avg
> except CalcAverage:
> return finally avg
> sum += val
> count += 1
It looks to me like it returns (or yields) the running average either way.
I see a reason to send in a sentinel value, saying "Don't update the
average, just tell me the current value."
I don't see why that sentinel has to terminate the generator, nor do I
see why that final average has to be returned rather than yielded.
More information about the Python-ideas