February 2006
Intermediate to advanced
648 pages
14h 53m
English
Function decorators are used to modify what happens when a function is defined. That is, they affect the behavior of the def statement itself. Decorators are denoted using the special @ symbol, as follows:
@foo
def bar(x):
return x*2The preceding code is shorthand for the following:
def bar(x):
return x*2
bar = foo(bar)In the example, a function bar() is defined. However, immediately after its definition, the function object itself is passed to the function foo(), which returns an object that replaces the original bar. An example will clarify:
def foo(f):
def wrapper(*x,**y):
print "Calling", f.__name__
return f(*x,**y)
return wrapperIn this case, foo() places a wrapper function around the original function object. If ...