在Python中实现闭包

在Python中实现闭包

Python 实现闭包有两个要点:

  1. 在外层函数内部声明一个内部函数。
  2. 内部函数引用外部函数的变量。

举个例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
def add_ten():
    ten = 10

    def add(num):
        return num + ten

    return add


closure = add_ten()
print(closure(5))  # 15

这是一个没有什么实际意义的例子,不过它的的确确在 Python 中实现了闭包。

如何理解闭包

闭包由函数以及声明该函数的词法环境组合而成,同时包含了闭包创建时作用域内的任何局部变量

正常情况下,add_ten()执行结束后,其局部变量会失效,而在这个例子中,add_ten()返回了add(num)的引用,局部变量被封装在了闭包中。因此,当closure被调用时,变量ten仍然可用。

闭包有什么作用

坦白来说,我从来没有在项目代码中使用过闭包,不过从代码实现上来看,闭包应该有两个主要的作用:

  1. 保护内部变量。
  2. 实现函数工厂。

后面如果我在项目中如果用到了闭包技巧的话,再来详细说说吧。

收~


原文链接:在Python中实现闭包

Buy me a coffee~
支付宝
微信
0%