I'm so used to it now that I had forgotten what good it does. So I looked it up. Check this out:

```python
from functools import wraps
def my_decorator(f):
    @wraps(f)
    def wrapper(*args, **kwds):
       return f(*args, **kwds)
    return wrapper

@my_decorator
def example():
    """Docstring"""
    print 'Called example function'


example()
#Called example function

print example.__name__
#'example'
print example.__doc__
#'Docstring'


def without_functools_decorator(f):
    def wrapper(*args, **kwds):
       return f(*args, **kwds)
    return wrapper

@without_functools_decorator
def example():
    """Docstring"""
    print 'Called example function'

example()
#Called example function

print example.__name__
#'wrapper'
print example.__doc__
#None
```

Basically, what `functools.wraps` gives is that it makes the function name and docstring stay intact. I think that's quite useful. Especially around a test where code (e.g. nose) might need to report on a test class's name and stuff.