7.4. What are Higher Order Functions?ΒΆ

A higher-order function is a function that takes a function as an argument and/or returns a function. One of the first higher-order functions presented in this text was the make_apply_tax function which returned a specialized version of apply_tax.

In [1]: make_apply_tax = lambda rate: lambda cost: rate*cost

In [2]: apply_tax = make_apply_tax(1.065)

In [3]: apply_tax(5.05)
Out[3]: 5.3782499999999995

The functions map, filter and reduce are examples of higher order functions, as they take functions as arguments. Another example of a built-in Python function that is higher-order is the max function, as it can take a key function as an argument (as illustrated in the last chapter).

Using higher-order functions allows us to generalize higher level patterns. For example, we can replace many of the for loops found in imperative Python code with some combination of map, filter and reduce.

Note

The exercises at the end of this chapter allow you to practice this higher level thinking, as we to return to the exercises from Chapter 4, but this time use map, filter and reduce to solve each problem.

The next section covers some of the other higher level abstractions that an be achieved using higher-order functions.

Next Section - 7.5. Other Examples of Higher Order Functions