Maybe, just maybe @decorator syntax is ok after all

Bengt Richter bokr at oz.net
Mon Aug 9 12:09:33 EDT 2004


On 9 Aug 2004 07:07:54 -0700, artur_spruce at yahoo.com (AdSR) wrote:

>artur_spruce at yahoo.com (AdSR) wrote in message news:<b840abf4.0408080422.44fcf41c at posting.google.com>...
>> <snip>
>> @dec1
>> @dec2
>> def foo():
>>     pass
>> 
>> <snip> 
>> 
>> and after the second:
>> 
>> def foo():
>>     pass
>> 
>> foo = dec2(foo)
>> 
>> foo = dec1(foo)
>
>The latter is equivalent to:
>
>def foo():
>    pass
>foo = dec1(dec2(foo))
>
>But I've just noticed that the spec says:
>
>"""
>@f1
>@f2
>def func(): pass
>
>is equivalent to:
>
>def func(): pass
>func = f2(f1(func))
>"""
>
>So the order is reverse, which breaks my previous interpretation. Oh, well...
>
I think your example is not from the PEP. What "spec" are you citing?
Note the order in the example cut and pasted from the current
(Last-Modified:	2004/08/06 18:34:15) pep 318:
----
The current syntax for function decorators as implemented in Python 2.4a2 is:

@dec2
@dec1
def func(arg1, arg2, ...):
    pass

This is equivalent to:

def func(arg1, arg2, ...):
    pass
func = dec2(dec1(func))
----

Regards,
Bengt Richter



More information about the Python-list mailing list