很多人把装饰器搞的很复杂,其实本质很简单.
首先,什么是装饰器呢?在代码中发现戴着@xxx帽子的,就是装饰器.
那要怎么自己定义一个装饰器呢?
其实任何一个接收一个参数的callable都可以用来做装饰器,比如函数和类.为方便起见,下面的例子都用函数来说明.
def deco(func):return 1
这里,deco就可以做装饰器.
@deco
def f(args):pass
"戴帽"其实就是调用,帽子戴在谁(一个函数定义)头上,就表示将谁作参数来调用,然后赋给一个同名变量.
上面的例子等价于f = deco(f).结果是函数f变成了1.
当然,我们用装饰器可不是用来返回1的.我们主要......
阅读全文