Python 闭包

什么是闭包

闭包是指绑定外部变量的函数,例如

1
2
3
4
5
6
7
8
9
10
11
12
 def pow_x(x):

def echo(value):

return value**x
return echo


lst = [pow_x(2),pow_x(3),pow_x(4)]

for p in lst:
print(p(2))

特点

1.嵌套函数
2.内部函数用到了外部变量
3.外部函数返回内部函数

4.内部函数不能改变外部变量

5.内部函数用到了外部变量的 list,则可以从外部或内部改变值,并且及时外部没有引用也不会回收。

def pow_x(x):

    def echo(value):
        # x = 2   # 如果使用了局部变量,外部参数无论如何也进不来了。
        return value**x
    return echo


lst = [pow_x(2),pow_x(3),pow_x(4)]

for p in lst:
    print(p(2))