@decorator这个语法相当于 执行 func = decorator(func),为func函数装饰并返回
<1> 类装饰器
## 装饰器 #类装饰器 class Decorator: def __init__(self,func): ## 赋值函数 self.func = func def __call__(self, *args, **kwargs): ## 一call顶万物 print('假设这里开始执行其他的代码') self.other_func() self.func(*args, **kwargs) self.other_func2() print('假设这里在执行完这个函数后,执行了其他的代码') return def other_func(self): print('这是一个打酱油的函数') @staticmethod def other_func2(): print('这是一个吃瓜的函数') ## 测试一下 @Decorator def test_a(a,b): print(f'print a :{a}') print(f'print b :{b}') c = a+b print(c) return c test_a(1,2)
执行结果:
<2>函数装饰器
函数装饰器还是比较多的,相对来说
def zsq_func(func): print('这是一个函数装饰器') def wrapper(*args,**kwargs): try: print('开始前,执行的代码') func(*args,**kwargs) print('结束了,执行的代码') return except: print('出错了的处理') print('执行装饰器函数前可以执行其他代码') return wrapper ## 测试一下 @zsq_func def func(a,b): print(f'print a :{a}') print(f'print b :{b}') c = a+b print(c) return c func(1,2)
结果如下: