How do you make a higher order function in Python?

Functions and methods are first-class objects in Python, so if you want to pass a function to another function, you can just treat it as any other object.

To bind a function object to a specific context, you can use either nested scopes or callable objects. For example, suppose you wanted to define linear(a,b) which returns a function f(x) that computes the value a*x+b. Using nested scopes:

def linear(a, b):