闭包的使用场景
闭包的使用场景
有时需要保存函数中的变量,并在后续调用中重复使用它(形成“带状态的函数”)。例如:在某个初始值基础上不断累加、带固定前缀的日志打印器、预先配置好参数的函数工厂等。
闭包的作用:可以保存函数内的变量,不会随着函数调用完而销毁
典型场景 1:累加器(保存内部状态)
def make_adder(base):
total = base
def add(x):
nonlocal total
total += x
return total
return add
adder = make_adder(10)
adder(1)
adder(5)
典型场景 2:函数工厂(预先配置参数)
def make_multiplier(k):
def mul(x):
return x * k
return mul
double = make_multiplier(2)
double(21)