[Python-Dev] Decorators with arguments are curries! (original) (raw)
"Martin v. Löwis" martin at v.loewis.de
Sat Aug 7 15:00:13 CEST 2004
- Previous message: [Python-Dev] Re: Decorators with arguments are curries!
- Next message: [Python-Dev] Decorators with arguments are curries!
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Andrew Durdin wrote:
def bardecorator(func, param): print param return func
@foodecorator @bardecorator("one param here") def decoratedfunc(): pass Here the first decorator statement is bare, while the second one includes parentheses and an argument; the first one looks like a function reference, while the second looks like a function call.
Correct. And that is indeed the intended meaning. Did you try this out? It gives
Traceback (most recent call last): File "b.py", line 9, in ? @foo_decorator TypeError: bar_decorator() takes exactly 2 arguments (1 given)
(although, as you can see, the line number is off by one)
See
http://www.python.org/dev/doc/devel/ref/function.html
on why this is so.
Most of my concern here is that this aspect of decorator syntax appears to be implicitly introducing a currying syntax in one special circumstance, which is then not transferable to currying functions in normal situations, as it would conflict with function calling.
And yet, the proposal does no such thing.
Regards, Martin
- Previous message: [Python-Dev] Re: Decorators with arguments are curries!
- Next message: [Python-Dev] Decorators with arguments are curries!
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]