[Python-Dev] 2.4a2, and @decorators (original) (raw)
Jp Calderone exarkun at divmod.com
Tue Aug 3 06:50:56 CEST 2004
- Previous message: [Python-Dev] Re: 2.4a2, and @decorators
- Next message: [Python-Dev] 2.4a2, and @decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
James Y Knight wrote:
[snip]
An even better workaround is to write: def d(arg): return arg @d(foo or bar) def f(): ... However, it seems as if this restriction creates a new class of expression for no gain. It is true enough that most python expressions aren't useful to write after a @, but that's also true of a lot of other places an expression can be used (e.g. before a () of a function call. A list comprehension can never result in a callable object. An arithmetic operation usually won't.). The only real necessary restriction on the @ operator is that its argument be callable and take a single argument. Many expressions could return a callable object. Why not let them? Is it really worth having a special case just to SyntaxError expressions that sometimes won't result in an appropriate callable? Things someone might want to do, ordered roughly from most reasonable to least reasonable ;) @foo().bar() @foo or bar @mydecorators['foo'] @lambda f: foo(f) or bar(f) Why disallow these forms? It seems quite difficult, especially, to explain why the first one does not, or should not, work. James
For what it's worth, I agree with James completely.
Jp
- Previous message: [Python-Dev] Re: 2.4a2, and @decorators
- Next message: [Python-Dev] 2.4a2, and @decorators
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]