Python中的闭包特性
闭包是指一个函数和它的环境变量合在一起的结构,闭包可以让函数在定义函数的时候,访问定义函数之外的变量,从而让函数能够访问外部变量,同时也保护外部变量不被修改。
使用方法
-
定义一个函数,在函数内部定义一个函数,将内部函数返回,这样就可以创建一个闭包,例如:
def outer_func(x): y = x * 2 def inner_func(z): return x + y + z return inner_func f = outer_func(5) print(f(2)) # 输出12
-
可以使用装饰器来创建闭包,例如:
def decorator(func): def wrapper(): print('before func') func() print('after func') return wrapper @decorator def func(): print('func') func() # 输出 before func func after func
应用场景
-
闭包可以用来构建类似面向对象的编程,将多个函数和变量封装到一个对象中,从而实现封装和隐藏细节,例如:
def make_counter(): count = 0 def counter(): nonlocal count count += 1 return count return counter counter = make_counter() print(counter()) # 输出1 print(counter()) # 输出2
-
闭包可以用来实现延迟计算,它可以将一些耗时的计算延迟到调用时,例如:
def make_lazy_sum(x, y): def sum(): return x + y return sum lazy_sum = make_lazy_sum(2, 3) print(lazy_sum()) # 输出5