闭包函数
闭包是一个返回函数的函数。这个返回的函数通常被称为内嵌函数,并且它会访问在其创建时定义的所有局部变量。重要的是,闭包允许使用这些局部变量,即使原始函数已经执行完毕。当内部函数使用外部函数而非全局作用域里名字,这个内部函数就是闭包函数
def outer(x):
def inner(y):
return x + y
return inner
f = outer(10)
print(f(5)) # 输出:15
outer
是一个外部函数,它接受一个参数 x
并返回 inner
。注意,inner
引用了外部函数中的变量 x
。当我们调用 outer(10)
时,它返回了 inner
的一个实例,该实例记住了 x
的值为10。然后,我们将这个返回的函数赋值给 f
。当我们调用 f(5)
时,实际上是调用了 inner(5)
,并且将 x
的值设置为10。因此,inner(5)
的返回值是 10 + 5 = 15
。
此inner
就是闭包函数。有些同学会问,当外部函数执行完不就释放了吗?这是因为return
返回的是inner
的地址信息,所以能够直接调用。