【补充】闭包函数

发布时间 2023-07-25 16:13:23作者: Chimengmeng

【补充】闭包函数

  • 闭包是指在一个函数内部定义的函数,并且这个内部函数可以访问到其外部函数的变量,即使外部函数已经执行完毕并返回了。

下面是一个简单的闭包函数示例:

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。
  • 闭包的特点是内部函数可以访问到外部函数的变量,即使外部函数已经执行完毕。
  • 这种特性提供了一种机制,可以在函数内部创建数据的私有性,防止泄露到全局作用域中,同时也可以实现数据的持久化,使得函数对象能够记住之前的状态。
  • 闭包在很多情况下非常有用,例如函数工厂、回调函数等场景。