Python 闭包详解
闭包是指能够访问外部作用域变量的函数。
1. 基本闭包
def outer():
x = 10
def inner():
print(x)
return inner
func = outer()
func() # 10
2. 带参数的闭包
def make_multiplier(n):
def multiplier(x):
return x * n
return multiplier
double = make_multiplier(2)
print(double(5)) # 10
triple = make_multiplier(3)
print(triple(5)) # 15
3. 计数器
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
c = make_counter()
c() # 1
c() # 2
c() # 3
4. 装饰器本质
def logger(func):
def wrapper(*args, **kwargs):
print(f"Calling {func.__name__}")
return func(*args, **kwargs)
return wrapper
5. 注意事项
# nonlocal 声明
def outer():
x = 10
def inner():
nonlocal x # 声明修改外部变量
x = 20
inner()
print(x) # 20
闭包是函数式编程的重要组成部分。