Python函数-闭包的概念

Posted 空林~~清风~~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python函数-闭包的概念相关的知识,希望对你有一定的参考价值。

一个函数和它的环境变量合在一起,就构成了一个闭包(closure)。在Python中,所谓的闭包是一个包含有环境变量取值的函数对象。环境变量取值被保存在函数对象的__closure__属性中。比如下面的代码:

def line_conf():
    b = 15
    def line(x):
        return 2*x+b
    return line       # return a function object

b = 5
my_line = line_conf()
print(my_line.__closure__)
print(my_line.__closure__[0].cell_contents)
print(my_line(5))

>>>>
(<cell at 0x004E8550: int object at 0x1DEC6960>,)
15
25 #B的取值为15, 2*5+15=25

__closure__里包含了一个元组(tuple)。这个元组中的每个元素是cell类型的对象。我们看到第一个cell包含的就是整数15,也就是我们创建闭包时的环境变量b的取值。

以上是关于Python函数-闭包的概念的主要内容,如果未能解决你的问题,请参考以下文章

Python概念之装饰器迭代器生成器

python 闭包

python的闭包

Python之闭包and装饰器

python函数下篇装饰器和闭包,外加作用域

说说Python中的闭包 - Closure