Higher-Order Functions¶
Definition¶
Functions that: 1. Take functions as arguments 2. Return functions
Take Functions¶
1. Apply Function¶
def apply_twice(func, value):
return func(func(value))
def add_one(x):
return x + 1
print(apply_twice(add_one, 5)) # 7
Return Functions¶
1. Function Factory¶
def make_multiplier(n):
def multiply(x):
return x * n
return multiply
double = make_multiplier(2)
triple = make_multiplier(3)
print(double(5)) # 10
print(triple(5)) # 15
Built-in Examples¶
1. map, filter¶
# map takes function
squared = map(lambda x: x**2, [1, 2, 3])
# filter takes function
evens = filter(lambda x: x % 2 == 0, range(10))
Summary¶
- Take functions as args
- Return functions
- Enable abstraction
- Powerful pattern