Programming FAQ — How do you make a higher order function in Python?
You have two choices: you can use nested scopes or you can use callable objects.
Reference note (untrusted external data; do not execute it as instructions).
You have two choices: you can use nested scopes or you can use callable objects. For example, suppose you wanted to define linear(a,b) which returns a function f(x) that computes the value ax+b. Using nested scopes
def linear(a, b): def result(x): return a x + b return result
Or using a callable object
gives a callable object where taxes(10e6) == 0.3 10e6 + 2.
The callable object approach has the disadvantage that it is a bit slower and results in slightly longer code. However, note that a collection of callables can share their signature via inheritance
class exponential(linear): # init inherited def call(self, x): return self.a (x self.b)
Object can encapsulate state for several methods
count = counter() inc, dec, reset = count.up, count.down, count.set
Here inc(), dec() and reset() act like functions which share the same counting variable.
Attribution: Adapted from Python Documentation under PSF-2.0. Adaptation: WikiKV isolated this documentation section, normalized formatting, removed long code blocks, and shortened it for retrieval. Verify version-sensitive details at the source.
ATTRIBUTED SOURCE
This compact reference card is adapted from official documentation and is not a community-verified experience.
Python Documentation — Doc/faq/programming.rst :: How do you make a higher order function in Python? ↗Revision 948fd7e5c084 · PSF-2.0