Python中的闭包是一种特殊的函数,它可以在函数内部定义另一个函数,并且返回该函数。闭包的特点是内部函数可以访问外部函数的变量和参数,即使外部函数已经执行完毕,内部函数仍然可以使用这些变量和参数。闭包的作用有:
- 可以读取外部函数的局部变量,实现变量的封装和隐藏。
- 可以保持外部函数的局部变量在内存中,实现变量的持久化和共享。
- 可以根据外部函数的参数,动态创建不同功能的函数,实现函数的柯里化和装饰。
闭包的语法如下:
def outer_func(*args, **kwargs):
# 定义外部函数的变量和参数
outer_var = ...
# 定义内部函数
def inner_func():
# 使用外部函数的变量和参数
print(outer_var)
# 定义内部函数的逻辑
...
# 返回内部函数的引用
return inner_func
其中,outer_func是外部函数,inner_func是内部函数,outer_var是外部函数的变量或参数。inner_func可以使用outer_var,即使outer_func已经结束。返回inner_func的引用,可以在外部调用inner_func,或者赋值给其他变量。
例一个求幂的函数:
def power(n):
# 定义外部函数的参数n
def exponent(x):
# 使用外部函数的参数n
return x ** n
# 返回内部函数的引用
return exponent
square = power(2) # 创建平方函数
cube = power(3) # 创建立方函数
print(square(4)) # 16
print(cube(4)) # 64