Python offers us many ways to create higher-order functions. In Chapter 5, Higher-order Functions, we looked at two techniques: defining a function which accepts a function as an argument and defining a subclass of
Callable which is either initialized with a function or called with a function as an argument.
In this chapter, we'll look at using a decorator to build a function based on another function. We'll also look at two functions from the
functools module, the
wraps() functions, that can help us build decorators.
One of the benefits of decorated functions is that we can create composite functions. These are single functions that embody functionality from several sources. A composite ...