[Python-Dev] Re: Decorators with arguments are curries! (original) (raw)
Guido van Rossum guido at python.org
Sat Aug 7 18:29:44 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 ]
The primary issues were: (1) That decorators with vs. without arguments look inconsistent, like function calls vs. function references, and (2) that consequentially, decorator syntax is implicitly introducing a non-viable currying syntax.
I think you're mistaken. When using @foo, foo should be a function taking one argument; when using @foo(x,y,z), the call to foo(x,y,z) should return a function of one argument (or an equivalent callable object, of course). This is often done by defining an inner "helper" function, e.g.:
def funcattrs(**kwds):
def helper(func):
func.__dict__.update(kwds)
return helper
@funcattr(counter=42, obsolete=True)
def foobar():
pass
--Guido van Rossum (home page: http://www.python.org/~guido/)
- 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 ]