holger krekel wrote:
[...] I think we can may get away with only a "weak" keyword and allow the aforementioned encapsulation of execution events into an object like this:
exec expr [with params]: suite
where the expression is evaluated to return a "thunk" handler with these optional "execution" hooks:
def __enter__(self): "before suite start"
def __except__(self, type, value, tb): "swallow given exception, reraise if neccessary"
def __leave__(self): """upon suite finish (not called if __except__ exists and an exception happened) """
Why not simply have one method def __execute__(self, thunk): which gets passed the thunk. This method can do anything it likes before executing the thunk, it can do anything after executing the thunk, and it can implement exception handling: class twice: def __execute__(self, thunk): print "start" try: thunk() print "once" thunk() print "twice" except Exception, exc: print "exception", ext else: print "OK" Then you can do: exec twice(): for i in xrange(10): print i Bye, Walter Dörwald