python装饰器理解

python学习网 2020-09-04 19:23:05
一 先理解这个
1、闭包
函数定义中若满足3个要素,则可称为闭包
① 外部函数A嵌套一个内部函数B
② 外部函数A返回内部函数B的函数名
③ 内部函数B调用非全局变量(即外部函数A的形参或者变量)
以下是对应的闭包例子
2、万能装饰公式:
只要你被装饰,那么相当于这个被装饰的函数的函数名=装饰器(被装饰的函数名) -- 无论怎样,先记住它
二 函数装饰器

 

三 类装饰器
1、先理解这个
魔术方法__call__
假如存在类A,当执行A()()时会触发执行__call__方法(即类的对象加上括号的时候)
 2、类装饰器

 

四 装饰器应用
1、第一个应用 - 通过装饰器传参,实现类似数据驱动的内容
如果要实现装饰器传参,则需要在装饰器中定义3层函数
最外层函数的返回值是第二层函数名,第二层函数的返回值是第三层函数名

2、第二个应用 - 一个函数被多个装饰器装饰,实现对旧函数新增多重功能
记住:原理“从下往上”,执行“从上往下”

阅读(2114) 评论(0)