π§ Python Higher-Order Functions β Functions That Work with Functions
π§² Introduction β What Are Higher-Order Functions?
In Python, functions are first-class citizens. This means functions can be:
- Assigned to variables β
- Passed as arguments β
- Returned from other functions β
A Higher-Order Function (HOF) is any function that takes another function as an argument or returns a function as a result.
They are the foundation of functional programming in Python and are used in tools like map()
, filter()
, sorted()
, decorators, and custom logic.
π― In this guide, you’ll learn:
- What higher-order functions are
- Common built-in HOFs (
map
,filter
,reduce
,sorted
) - How to create your own higher-order functions
- Real-world use cases and best practices
π§ What Is a Higher-Order Function?
A higher-order function is any function that does one or both of the following:
- Accepts another function as an argument
- Returns a function
β Example 1: Function as Argument
def shout(text):
return text.upper()
def greet(func):
return func("hello")
print(greet(shout)) # Output: HELLO
π Explanation:greet()
takes another function (shout
) as input and applies it to a string.
β Example 2: Returning a Function
def outer(x):
def inner(y):
return x + y
return inner
add_five = outer(5)
print(add_five(10)) # Output: 15
π‘ Use Case: This is the foundation of closures and decorators.
π Common Built-In Higher-Order Functions
πΉ map()
Applies a function to every element in an iterable.
squares = list(map(lambda x: x * x, [1, 2, 3]))
print(squares) # [1, 4, 9]
πΉ filter()
Filters elements based on a condition.
evens = list(filter(lambda x: x % 2 == 0, range(10)))
print(evens) # [0, 2, 4, 6, 8]
πΉ reduce()
(from functools
)
Applies a rolling computation.
from functools import reduce
product = reduce(lambda x, y: x * y, [1, 2, 3, 4])
print(product) # 24
πΉ sorted()
with key
Sorts based on a custom function.
words = ['banana', 'apple', 'cherry']
print(sorted(words, key=lambda x: len(x))) # ['apple', 'banana', 'cherry']
π§ Custom Higher-Order Function
def apply_twice(func, value):
return func(func(value))
print(apply_twice(lambda x: x + 3, 7)) # Output: 13
π Explanation:
The function func
is applied two times to the input value
.
π‘ Best Practices
- β Use HOFs to reduce duplication and abstract behavior
- β
Combine with
lambda
for simple one-off logic - β
Use
functools.wraps
when writing function-returning decorators - β οΈ Avoid deep nesting of HOFs for readability
π Summary β Recap & Next Steps
Python higher-order functions are functions that take other functions as arguments or return them. They form the basis for map-reduce, decorators, and functional abstraction in modern Python.
π Key Takeaways:
- β A higher-order function accepts or returns another function.
- β
Common HOFs:
map()
,filter()
,reduce()
, andsorted()
. - β You can create custom HOFs for reusable and composable code.
- β οΈ Maintain readability when combining lambdas or multiple nested HOFs.
βοΈ Real-World Relevance:
Higher-order functions are widely used in data pipelines, API wrappers, web frameworks, and machine learning preprocessing, making them a vital tool in every Python developerβs toolkit.
β FAQ Section β Python Higher-Order Functions
β What is a higher-order function in Python?
β A higher-order function is a function that accepts another function as a parameter or returns a function.
β Is map()
a higher-order function?
β
Yes. map()
takes a function and an iterable, applying the function to each item.
β Whatβs the difference between a regular function and a higher-order function?
β A regular function performs computation directly, while a higher-order function works on other functions.
β Can I return a function from another function?
β Yes! This is the basis of closures and decorators.
β Are decorators higher-order functions?
β Absolutely. Decorators are one of the most common real-world examples of higher-order functions.
Share Now :