[Python-Dev] Decorators with arguments are curries!

Andrew Durdin adurdin at gmail.com
Sat Aug 7 15:13:50 CEST 2004


On Sat, 07 Aug 2004 15:00:13 +0200, "Martin v. Löwis"
<martin at v.loewis.de> wrote:
> Andrew Durdin wrote:
> >
> > 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.

Ah! Quite so. The relevant quote would be: "The result [of the
decorator expression] must be a callable, which is invoked with the
function object as the only argument".
I guess I didn't pay quite enough attention to the examples in PEP 318
to understand them properly :)


More information about the Python-Dev mailing list