
It is a very common case to return a nested function, e.g. in a decorator: def deco(f): def _f(*args,**kwargs): do_something() try: return f(*args,**kwargs) finally: do_something_different() return _f While I agree that the current way with non-anonymous functions perfectly works, it looks ugly to a lot of people. Maybe one of these syntax variants would be an option: def deco(f): return def(*args,**kwargs): do_something() try: return f(*args,**kwargs) finally: do_something_different() def deco(f): return(*args,**kwargs): do_something() try: return f(*args,**kwargs) finally: do_something_different() def deco(f): def return(*args,**kwargs): do_something() try: return f(*args,**kwargs) finally: do_something_different() Ok, the last one is not serious. This would not be some kind of anonymous function expression but an extended form of the return statement. Maybe you could do the same thing for yield? Well, I guess not, because yield can have a return value and this would be awkward: x = yield(a,b): return a + b And this would not be an option: f(yield(a,b): return a + b) But extending return and not extending yield feels wrong. What do you think? Does anyone have a better idea or is the current way the only thinkable for python (which might very well be the case)? -panzi