【补充】闭包函数
- 闭包是指在一个函数内部定义的函数,并且这个内部函数可以访问到其外部函数的变量,即使外部函数已经执行完毕并返回了。
下面是一个简单的闭包函数示例:
def outer_func(x):
def inner_func(y):
return x + y
return inner_func
closure = outer_func(10)
result = closure(5)
print(result) # 输出 15
- 在上述示例中
outer_func
是外部函数,它接受一个参数x
。- 在
outer_func
内部,定义了一个嵌套的函数inner_func
,它接受一个参数y
,并返回x + y
的结果。 outer_func
最后返回了inner_func
这个函数对象。
- 当调用
outer_func(10)
时,会返回一个内部函数inner_func
,并且在内部函数中,x
的值被保留为 10。 - 然后,可以将返回的
inner_func
赋值给一个变量closure
。 - 随后,我们通过
closure(5)
调用inner_func
,传入参数 5。 - 此时,
inner_func
内部可以访问到外部函数outer_func
中的变量x
(其值为 10),然后将 5 加上 10,得到结果 15。
- 闭包的特点是内部函数可以访问到外部函数的变量,即使外部函数已经执行完毕。
- 这种特性提供了一种机制,可以在函数内部创建数据的私有性,防止泄露到全局作用域中,同时也可以实现数据的持久化,使得函数对象能够记住之前的状态。
- 闭包在很多情况下非常有用,例如函数工厂、回调函数等场景。