Key Concepts
Functional programming emphasizes:- Pure functions: Output depends only on input
- Immutability: Avoid changing state
- Higher-order functions: Functions that take/return functions
- Composability: Combine simple functions into complex ones
Iterators
Basic Iterator Usage
An iterator returns data one element at a time:Iterate Through Collections
List Comprehensions
Generator Expressions
Memory-Efficient Iteration
Generator vs List Comprehension
Generator Functions
Creating Generators
Useyield instead of return:
Infinite Generators
Generator State
Generators maintain state between calls:Built-in Functions
map()
Apply function to every item:filter()
Select items that match a condition:enumerate()
Get index and value:zip()
Combine multiple iterables:any() and all()
Test iterator contents:sorted()
Sort any iterable:The itertools Module
Creating Iterators
The functools Module
reduce()
Cumulatively apply a function:partial()
Create functions with pre-filled arguments:lru_cache()
Cache function results:Lambda Functions
Basic Usage
With Built-in Functions
The operator Module
Function equivalents of operators:Practical Examples
Data Pipeline
Functional Data Processing
Composing Functions
Best Practices
When to use functional programming:
- ✅ Data transformations and pipelines
- ✅ Processing collections
- ✅ Stateless operations
- ✅ Parallel processing
- ❌ Complex stateful logic
- ❌ I/O heavy operations
- ❌ When performance is critical (imperative may be faster)
Summary
Key functional programming tools in Python:- Iterators - process data one item at a time
- Generators - create iterators with
yield - List comprehensions - concise list creation
- Built-ins -
map(),filter(),zip(),enumerate() - itertools - combinatoric and infinite iterators
- functools -
reduce(),partial(), higher-order functions - operator - function equivalents of operators
