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; this is where I would expect the information to be: https://docs.python.org/3/reference/expressions.html#generator.close As a general rule, a generator shouldn't be leaking StopIteration. In a future version of Python, this will trigger RuntimeError. (You can get that behaviour in 3.6 with a future import, too.) So what this really means is that close() will suppress any GeneratorExit, or the generator returning, both of which are normal occurrences. The only significant thing is that the generator's return value could usefully be propagated out of close(). ChrisA -- https://mail.python.org/mailman/listinfo/python-list