Writing higher-order functions
We can identify three varieties of higher-order functions; they are as follows:
Functions that accept a function as one of its 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 Techinques.
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 at...