[Python-ideas] [Python-Dev] Decorator syntax
Guido van Rossum
guido at python.org
Wed Sep 2 16:15:22 CEST 2009
On Wed, Sep 2, 2009 at 4:18 AM, Nick Coghlan<ncoghlan at gmail.com> wrote:
> Xavier Morel wrote:
>> On 2 Sep 2009, at 12:15 , Rob Cliffe wrote:
>>>
>>> @Identity(DecoList[0]) # THIS WORKS
>>> def foo():
>>> pass
>> For what it's worth, you don't need an id function, you can simply write
>>
>> @itemgetter(0)(decorators)
>> def foo():
>> 'whatever'
>> or
>>
>> @decorators.__getitem__(0)
>> def foo():
>> 'whatever'
>
> To be honest, I'd forgotten the restriction was even there. So +0 on
> removing it and relying on "consenting adults" and style guides to keep
> people from getting to obscure with their decorators.
>
> However, any such change should also be accompanied by an update to PEP
> 8 (recommending the current syntactic restrictions as style rules for
> the standard library).
To be honest, I'm still -0 on allowing full expression syntax, but I'm
fine allowing @foo[expr]. Decorators are syntactic sugar that make
existing functionality more readable. I don't think that allowing
complex expressions in the decorator furthers that goal.
After all the solution is always only one line away:
helper = <complicated expression>
@helper
def func(args):
body
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-ideas
mailing list