0%

浅谈对Python中闭包的理解

python中的闭包是一个相对比较模糊的概念,但是随着深入的学习就会发现闭包无论如何都是需要去理解的.下面我将自己对闭包的理解进行阐述.

专业解释:

闭包(Closure)是词法闭包是(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.另外一种说法认为闭包是由函数和与其相关的引用环境组合而合成的实体.

闭包的好处

-封装

-代码复用

使用闭包注意事项

闭包中是不能修改外部作用域的局部变量的

example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>>def foo():
... m=0
... def fool():
... m=1
... print m

... print m
fool()
print m

>>>foo()
0
1
0

从执行结果可以看出虽然在闭包里面也定义了一个变量m,但是其不会改变外部函数中的局部变量m.

闭包的理解

我们可以将闭包理解成一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的饮用,此时就构成了闭包.

闭包的格式

下面用伪代码进行闭包格式的表述

1
2
3
4
5
6
7
8
9
def 外层函数(参数):
def 内层函数():
print(“内层函数执行”,参数)

return 内层函数


内层函数的引用=外层函数(“传入参数”)
内层函数的引用