On Sunday, January 29, 2017 at 10:47:09 PM UTC-8, Chris Angelico wrote:
> On Mon, Jan 30, 2017 at 5:38 PM,  <inyeol....@gmail.com> wrote:
> > On Sunday, January 29, 2017 at 9:54:44 PM UTC-8, Chris Angelico wrote:
> >> ...
> >> When you close() a generator, it raises GeneratorExit into it, and
> >> then silences any StopIteration or GeneratorExit that comes out of it.
> >
> > Chris,
> > Thanks for the info. Is this (GenExit silencing StopIteration) documented 
> > somewhere?
> > I was suspecting this but couldn't find any reference.
> 
> Actually..... think this might be incorrect. I didn't look in the
> docs, I looked in the source code, so my information is guaranteed
> accurate

I found PEP-342 describes this behavior - silencing other GenExit or 
StopIteration.

BTW, the reason why I was checking this was to find a solution on how to get 
return value from coroutine without relying on some sentinel value, something 
like (not tested):

def accumulator():
  sum = 0
  try:
    while True:
      sum += yield
  except GeneratorExit:
    return sum

Any alternatives? Explicitly throwing GenExit looks like a hack.

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to