装饰器

  python装饰器就是 用于扩展原本函数功能的一种函数,这种函数返回值也是个函数。不改变原本函数代码的基础上 添加 新的功能 

     

     我们原函数定义为 alter()。返回值赋给原函数 ,效果为执行 输出 语句 “这里是原函数”

     定义装饰器函数 add(f1) 嵌套一个函数alter2()。add(f1)函数效果为空 ,里面的 函数 alter2()效果为执行 输出语句 “装饰器函数” 返回值赋给原函数

      

    执行。我们可以理解为 把原函数 赋值给add()的参数f1,然后执行add(alter),这时候我们执行的 是函数add(),并没有执行里面函数 alter2(),所以这时候我们可 以这样写:

  方法一

    f = add(alter)      #这时候我们执行到了add(alter) 函数。没有执行 alter()

    f()                       #这时候执行了alter2()函数

    这里是把函数 add(alter)赋值给f,在执行

    这时候原函数会执行 2 次

    

    这时候优化方法为 二

 

  方法二

    我们可以直接把 add(alter)赋值给alter:

    alter = add(alter)
   alter()

    这时候是执行不看结果的 ,我们这里可以 把原函数 alter()  函数赋值 给 f1() 参数  所以。我这里在函数alter2()函数中调用 f1()

这时候:

    

    

 

    在上述代码中。比较混乱。我们这里优化一下。

    在python中 。我们写好装饰器后,在给原函数优化的时候,只需要在原函数之前加上 @add ,这是 python 中的优化写法 

    

posted on 2018-11-22 15:09  童童学  阅读(83)  评论(0编辑  收藏  举报