# 闭包
# 在函数中提出的概念
# 闭包符合的几个条件:
1. 外部函数中定义了内部函数
2. 外部函数是有返回值的
3. 返回值是:内部函数名
4. 内部函数引用了外部函数的变量
# 格式:
def 外部函数():
...
def 内部函数():
....
return 内部函数名
# 案例
def func(a, b):
c = 10
def inner_func():
s = a + b + c
print('相加之后的结果是:', s)
return inner_func
# 调用func
ifunc = func(6, 9) # ifunc就是inner_func ifunc = inner_func
ifunc2 = func(2,8)
# 调用返回来的内部函数
ifunc2() ---->20 (保存返回闭包时的状态)
ifunc() ---->25 (保存返回闭包时的状态)
# 闭包的应用
1. 保存返回闭包时的状态(外层函数变量)
# 总结
闭包有什么缺点?
1. 作用域没有那么直观
2. 因为变量不会被垃圾回收所以有一定的内存占用问题
闭包的作用:
1. 可以使用同级的作用域
2. 读取其他元素的内部变量
3. 延长作用域
闭包总结:
1. 闭包看似优化了变量,原来需要类对象完成的工作,闭包也可以完成
2. 由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存
3. 闭包的好处,使代码变得简洁,便于阅读代码
4. 闭包是理解装饰器的基础
python中的闭包概念
------学习贵在分享,贵在记录,贵在总结。