Guido van Rossum wrote: [SNIP] > Straight up-or-down votes in the full senate are appreciated at this point. >
PEP 340 redux gets my +1; I think using generators will become more obviously useful to people when, as Fredrick pointed out, your code grows more than a few lines long. > On to the secondary questions: > > - Today I like the 'do' keyword better; 'with' might confuse folks > coming from Pascal or VB > -0; I can deal with either, but I just like how 'with' reads more. > - I have a more elaborate proposal for __exit__'s arguments. Let the > translation be as follows: > > abc = EXPR > [VAR =] abc.__enter__() > oke = False # Pronounced "okay" > exc = () > try: > try: > BLOCK > oke = True > except: > exc = sys.exc_info() > raise > finally: > abc.__exit__(oke, *exc) > > This means that __exit__ can be called with the following arguments: > > abc.__exit__(True) - normal completion of BLOCK > > abc.__exit__(False) - BLOCK was left by a non-local goto > (break/continue/return) > > abc.__exit__(False, t, v, tb) - BLOCK was left by an exception > > (An alternative would be to always call it with 4 arguments, the last > three being None in the first two cases.) > > If we adopt PEP 340 redux, it's up to the decorator for degenerate > generators to decide how to pass this information into the generator; > if we adopt PEP 342 ("continue EXPR") at the same time, we can let the > yield-expression return a 4-tuple (oke, t, v, tb). Most templates can > ignore this information (so they can just use a yield-statement). > I think a later email discussed just passing in the values from sys.exc_info(), and I like that more since it will be None if no exception was raised and thus straight-forward to detect without being overly verbose with the oke argument. -Brett _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com