
I don't think def temp(...) is so terrible. Perhaps it's slightly inelegant, but adding a new keyword just so decorator syntax can be used in a decidedly non-decoratorish way to save a small amount of typing doesn't seem like something that would be accepted. If we were adding anonymous functions, I should think we'd make them more powerful while we're at it; it would at least be good to have them be first-class expressions, so you could do: DECORATOR(def (...args...): ...function...) #or whatever the syntax for anonymous functions would end up being and all the other useful things that come with anonymous functions and closures. I think I suggested a while ago that we allow that syntax -- def (args): ...statements... -- to be used as an expression, and also allow it to span multiple lines like a normal Python function definitions, but I was told that this would complicate parsing of indentation. I'm not sure why that is, but I'm not familiar with the internals of Python's parser. In any case, you can currently do @DECORATOR def temp(...args...): ...function... (as you are already doing in your Twisted example) and all you'll end up with is a name called "temp" bound to None. Not too bad. I really don't think inhibiting the assignment of some Nones is worth a new keyword and such. On 25 Dec 2007, at 18:33, Ryan Freckleton wrote:
In general:
@DECORATOR do (..args...): ..function
would be the same as:
def temp(..args..): ..function DECORATOR(temp) del temp