一、闭包的定义
1,闭包是嵌套在函数中的
2,闭包是内层函数对外层函数的变量(非全局变量)的引用(改变)
def func1():
'''
此函数满足前两个条件,但还不是闭包
:return:
'''
name = '太白'
def func2():
print(name)
3, 闭包需要将其作为一个对象返回,而且必须逐层返回直至最外层函数的返回值
二、闭包举例
# 这是闭包
def wrapper():
name = '太白'
def inner():
print(name)
return inner
# 这也是闭包
def wrapper(name):
def inner():
print(name)
return inner
n1 = 'wusir'
wrapper(n1)
# 这不是闭包
name = 'alex'
def wrapper():
def inner():
print(name)
return inner
三、闭包的作用
# 非闭包函数 随着函数的结束临时空间关闭
def func1(s1):
n = 1
n += s1
print(n)
func1(5)
func1(5)
func1(5)
func1(5)
![](https://img2018.cnblogs.com/blog/1264188/201811/1264188-20181104233011669-377215718.png)
# 闭包函数
def wrapper(s1):
n = 1
def inner():
nonlocal n
n += s1
print(n)
return inner
ret = wrapper(5)
ret()
ret()
ret()
ret()
![](https://img2018.cnblogs.com/blog/1264188/201811/1264188-20181104233046893-1354747713.png)
![](https://img2018.cnblogs.com/blog/1264188/201811/1264188-20181104233132269-136936343.png)
闭包的机制:python遇到闭包,产生一个空间,这个空间不会随着函数的结束而消失。