Advanced Closures

Python FunctionsFree Lesson

Advertisement

Advanced Closures

Closure patterns, nonlocal, and practical applications.

Overview

Master advanced closure patterns.

Closure with State

def make_counter(start=0):
    count = [start]
    
    def counter():
        count[0] += 1
        return count[0]
    
    counter.reset = lambda: count.__setitem__(0, start)
    return counter

counter = make_counter(10)
print(counter())  # 11
print(counter())  # 12
counter.reset()
print(counter())  # 11

nonlocal Keyword

def make_averager():
    series = []
    
    def averager(new_value):
        series.append(new_value)
        return sum(series) / len(series)
    
    return averager

avg = make_averager()
print(avg(10))   # 10.0
print(avg(20))   # 15.0
print(avg(30))   # 20.0

Practical Applications

# Configuration factory
def make_config(defaults):
    config = defaults.copy()
    
    def update(key, value):
        config[key] = value
    
    def get(key, default=None):
        return config.get(key, default)
    
    def reset():
        config.clear()
        config.update(defaults)
    
    update.get = get
    update.reset = reset
    return update

config = make_config({"timeout": 30, "retries": 3})
config("timeout", 60)
print(config.get("timeout"))  # 60

Practice

Implement a memoization closure for recursive functions.

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement