闭包函数的条件:
1.内函数调用了外函数的变量
2.外函数把内函数返回的过程叫做闭包
这个内函数叫闭包函数
闭包函数的基本语法
闭包函数的特点:
1.内部函数调用了外部函数的局部变量
2.这个局部变量与内部函数发生绑定
3.这个变量的生命周期延长
闭包函数遵循LEGB原则:
B:Bultin (Python):Python内置函数块的命名空间 (内建作用域)
G:Global (module):函数外部所在的命名空间 (全局作用域)
E:Enclosing function locals 外部嵌套函数的作用域(嵌套作用域)
L:Local(function):当前函数的作用域 (局部作用域)
依据就近原则,从上往下 从里往外 依次寻找
闭包函数实例:
实例1:
def outer():
name="closure"
def inner():
nonlocal name #闭包函数注意要带的这个变量是由nonlocal修辞
name.replace("cl","pnamep")
return "%s+inner"%(name)
return inner
func=outer()
res=func()
实例2:
def outer():
name="liss"
def inner1():
nonlocal name
name=name.replace("i","beautiful")
print(1,name)
def inner2():
nonlocal name
name=name.replace("i","perfect")
print(2,name)
def wuqilong():
return inner1,inner2
return wuqilong
res=outer()
print(res.__closure__)
tup=res()
inner1=tup[0]
inner1()
inner2=tup[1]
inner2()
1203

被折叠的 条评论
为什么被折叠?



