>>> add = wrapper(add)
This pattern can be used at any time, to wrap any function. But if we are defining a function we can “decorate” it with the @ symbol like:
>>> @wrapper
… def add(a, b):
… return Coordinate(a.x + b.x, a.y + b.y)
http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/