017-闭包-装饰器

Posted hhj-study-10years

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了017-闭包-装饰器相关的知识,希望对你有一定的参考价值。

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


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

 


以上是关于017-闭包-装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python闭包和装饰器

9.23闭包函数/装饰器/迭代器/生成器

CSIC_716_20191112闭包函数和装饰器

python闭包函数装饰器

python函数下篇装饰器和闭包,外加作用域

python闭包及装饰器