闭包(Closure)是Python中一种特殊的函数对象,它可以记住并访问定义它的作用域中的变量,即使该作用域已经执行完毕。闭包是函数式编程的重要概念,在Python中有着广泛的应用。
一、闭包的基本概念
1.1 什么是闭包
闭包是指一个函数及其相关的引用环境的组合。具体来说:
- 函数内部定义了另一个函数(嵌套函数)
- 内部函数引用了外部函数的变量
- 外部函数返回内部函数
1.2 闭包的三要素
- 嵌套函数
- 内部函数引用外部函数的变量
- 外部函数返回内部函数
二、闭包的基本示例
2.1 简单闭包
def outer_func(x):
def inner_func(y):
return x + y
return inner_func
closure = outer_func(10) # x被"记住"为10
print(closure(5)) # 15
print(closure(10)) # 20
2.2 闭包的状态保持
def counter():
count = 0
def increment():
nonlocal count
count += 1
return count
return increment
my_counter = counter()
print(my_counter()) # 1
print(my_counter()) # 2
print(my_counter()) # 3
三、闭包的高级特性
3.1 闭包与变量作用域
闭包可以访问多个外部变量:
def power_factory(exponent):
def power(base):
return base ** exponent
return power
square = power_factory(2)
cube = power_factory(3)
print(square(5)