O'Reilly logo

Python: Essential Reference, Third Edition by David Beazley

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Function Decorators

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*2

The 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 wrapper

In this case, foo() places a wrapper function around the original function object. If ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required