DAY12学习笔记

  装饰器

    什么是装饰器

      器->工具。

      装饰->指的是为被装饰对象添加新功能。

      装饰器本身可以是任意可调用的对象->函数。

      被装饰对象也可以是任意可调用的对象->函数。

      目标:写一个函数来为另一个函数添加新功能。

    为何要用装饰器

      开放封闭原则:软件一旦上线。就对修改封闭,对扩展开放。

        对修改封闭:

          不能修改功能的源代码。

          也不能修改代码的调用方式。

        对扩展开放:

          可以为原有功能添加新的功能。

      用装饰器的目的就是在不修改功能源代码以及调用方式的前提下,为其添加新的功能。

    如何用装饰器

      利用两层闭包函数为核心语法为程序实现某些功能。     

    装饰器的语法糖@

      @语法糖的名字要在被装饰对象的正上方一行单独写入。

    有参装饰器

      模板:def outter2(xxx,yyy):

           def outter(func):

             def wrapper(*args,**kwargs):

               res=func(*args,**kwargs)

               print(xxx) print(yyy)

               return res

             return wrapper

           return outter

      在传值已经饱满,无法在进行传值的情况下,利用添加一层闭包函数来实现目的。

    global和nonlocal

      global:在局部声明变量为全局变量,用来在局部修改全局变量。

      nonlocal:在局部中声明变量是外层函数的变量,无法受全局变量影响。

 

posted @ 2018-09-27 18:37  夜夜夜夜夜i  阅读(112)  评论(0编辑  收藏  举报