一、什么是闭包?先用一句人话解释
闭包 = 函数 + 它创建时所捕获的外部变量
也可以理解为:
'带私有状态的函数'
二、一个最小但完整的闭包示例
def make_adder(x):
def adder(y):
return x + y
return adder
使用方式:
add_10 = make_adder(10)
print(add_10(5)) # 15
print(add_10(20)) # 30
发生了什么?
make_adder(10)执行完后,本应销毁- 但
adder记住了x = 10 x被'封'在函数里 —— 这就是 closure
📌 重点:
x 并不是参数,而是被'捕获'的变量
三、闭包 vs 普通函数
❌ 普通函数(无状态)
def add(x, y):
return x + y
- 每次调用都要传全参数
- 无法保存中间状态
✅ 闭包(有状态)
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter

