017-闭包-装饰器

闭包 : 
        闭包和函数的区别 : 闭包可以保存外层函数的参数(原理 : 外层函数返回了内层函数的引用,引用一直指向内层函数。内层函数又需要用到外层的参数,所以外层参数不会被销毁)
        格式 :
             # 注意外层函数一定要有参数或者变量等等,这样内层函数才可以使用外层的内容,如果没有的话
             # 那么内外层函数就没有任何联系,何必使用闭包呢。 
            def 外层函数(参数):
                    def 内层函数():
                            print(参数)
                    # 注意返回的是内层函数引用
                    return 内层函数


装饰器 : 
        作用 : 为被装饰的函数添加额外功能
        特点 : 装饰器函数只执行一次,@的时候执行(语法糖,先跳过@这一行,再回来执行)
        格式 :
               def 外层函数(参数):
                      def 内层函数():
                              print(参数)
                      return 内层函数
        
              @外层函数引用
              def 被修饰的函数():
                      代码块
        执行过程 : 
装饰器传参 : 格式 :
def 传参函数(参数A): def 外层(参数B): def 内层(): print(xxx) return 内层引用 return 外层引用 @ 传参函数(参数) def 被修饰的函数(): 代码块 先执行 @ 右边的函数,把参数传进去后,右边函数返回外层引用,此时等于 @外层引用,到这开 始就是装饰器了

猜你喜欢

转载自www.cnblogs.com/hhj-study-10years/p/9033371.html