Writing higher-order functions
We can identify three varieties of higher-order function; they are as follows:
- Functions that accept a function as one of their arguments.
- Functions that return a function. A
Callable
class is a common example of this. A function that returns a generator expression can be thought of as a higher-order function. - Functions that accept and return a function. The
functools.partial()
function is a common example of this. We'll save this for Chapter 10, The Functools Module. A decorator is different; we'll save this for Chapter 11, Decorator Design Techniques.
We'll expand on these simple patterns using a higher-order function to also transform the structure of the data. We can do several common transformations, such as the following:
- Wrap objects to create more complex objects
- Unwrap complex objects into their components
- Flatten a structure
- Structure a flat sequence
A Callable
class object is a commonly used example of a function that returns a callable
object. We'll look...