python中的闭包概念

# 闭包
# 在函数中提出的概念
# 闭包符合的几个条件:
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. 闭包是理解装饰器的基础
------学习贵在分享,贵在记录,贵在总结。
原文地址:https://www.cnblogs.com/kevin1220/p/14358490.html