闭包(Closure)是一个函数与其捕获的外部变量的组合体。一句话定义:
闭包 = 函数 + 其引用的外部变量(自由变量)的绑定。
无论什么语言,闭包本质上做了同一件事:让一个函数"记住"它诞生时所在的作用域里的变量,即使那个作用域已经执行完毕。
一、核心概念
1.1 自由变量 vs 绑定变量
def outer():
x = 10 # x 对外部函数是局部变量,对 inner 是自由变量(未在 inner 内定义)
y = 20 # y 同理
def inner():
print(x) # 引用外部变量 x → x 被 inner "捕获"
# y 未被引用 → 不会被闭包捕获

