A decorator is a function that modifies another function.
Consider the following example of a timer decorator:
>>> import time>>> def timer(f):... def inner(*args, **kwargs):... start = time.time()... result = f(*args, **kwargs)... print('Time elapsed:', time.time() - start)... return result... return inner...>>> @timer... def slow(delay=1):... time.sleep(delay)... return 'Finished!'...>>> print(slow())Time elapsed: 1.0011568069458008Finished!>>> print(slow(3))Time elapsed: 3.000307321548462Finished!
More information: