In this tutorial, I explain decorators in a very simple way by going over how to measure the execution time of function using decorators. They serve as a wrapper to original function but does a wonderful job of avoiding code duplication and not cluttering the original code with additional logic.
The code in this tutorial is available here: