[Python-Dev] PEP 340 -- concept clarification

Delaney, Timothy C (Timothy) tdelaney at avaya.com
Thu May 5 01:28:01 CEST 2005


Nick Coghlan wrote:

> Ah, someone else did post this idea first :)

I knew I was standing on the shoulders of others :)

> To deal with the generator issue, one option would be to follow up on
> Phillip's idea of a decorator to convert a generator (or perhaps any
> standard iterator) into a block iterator.
> 
> I think this would also do wonders for emphasising the difference
> between for loops and block statements.

I think if we are going to emphasise the difference, a decorator does
not go far enough. To use a decorator, this *must* be valid syntax::

    def gen():
        try:
            yield
        finally:
            print 'Done!'

However, that generator cannot be properly used in a for-loop. So it's
only realistically valid with the decorator, and used in a block
statement (resource suite ;)

My feeling is that the above should be a SyntaxError, as it currently
is, and that a new keyword is needed which explicitly allows the above,
and creates an object conforming to the resource protocal (as I called
it).

Tim Delaney


More information about the Python-Dev mailing list