On Mon, Jan 30, 2017 at 4:24 PM, <inyeol....@gmail.com> wrote: > I was expecting StopIteration from c.close() call, but Python 3.6 doesn't > raise any. > Is this behavior expected? I couldn't find any reference regarding > GeneratorExit and StopIteration interaction.
When you close() a generator, it raises GeneratorExit into it, and then silences any StopIteration or GeneratorExit that comes out of it. If you need different behaviour, what you could do is explicitly throw() into it: >>> c.throw(GeneratorExit) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration: 1 which you'd obviously want to wrap in try/except, but at that point, you have the result. Maybe this could be a feature request - that generator.close() returns the return value of the generator (or None if the GeneratorExit comes out)? ChrisA -- https://mail.python.org/mailman/listinfo/python-list