前言:
以往看到我博客的小伙伴可能都知道,我的前言一般都是吐槽和讲废话环节,哈哈哈哈。今天难得休息,最近可真是太忙了,博主已经连续一年都在996了,所以最近没怎么学习新东西,只能回顾以往的旧知识了,上周一起工作的小伙伴扛不住996离职了,我们三人的小团队也正式解散了,哎。原本想着找时间好好整理一个关于关于接口自动化测试或ceph相关的东西。但由于篇幅过长这里目前可能不会着手写这方面东西。其实啊写是很简单的,主要例子难找。哈哈哈哈。
好了回归正题吧。看过我以往博客的小伙伴肯定见我用过@parameterized.expand()用作参数化的装饰器。这属于系统定义装饰器,当然我们自己也可以自定义装饰器已适合我们日常的开发需求。
**什么是装饰器:**装饰器的本质就是一个函数,作用是在不改变源代码的情况下,给函数增加额外的功能;装饰器的使用通过@语法糖进行调用。
普通装饰器:
直接上代码吧。
def demo(func_test): def wrapper(): print('定义的第一个装饰器') func_test() print('装饰器结束') return wrapper #这里注意不要加括号 @demo def func_test(): print('小白小白!!!!')
直接使用自定义装饰器强化的原方法。
带有参数的装饰器:
def demo(func<i style="color:transparent">本文来源gaodai$ma#com搞$$代**码)网8</i>_test): def wrapper(name): print('定义的第一个装饰器') func_test(name) print('哦,你就是%s啊'%name) print('装饰器结束') return wrapper @demo def func_test(name): print('大家好我叫%s'%name)
是不是有点感觉了啊。
接下来就是不带自定义参数的装饰器
def demo(func_test): def wrapper(*name,**kwargs): print('定义的第一个装饰器') func_test(*name,**kwargs) print('哦,你就是%s啊'%name[0]) print('你今年%s岁啊'%name[1]) print('装饰器结束') return wrapper @demo def func_test(name,age): print('大家好我叫%s'%name) print('今年{}'.format(age))
是不是很简答啊。哈哈哈哈
多个装饰一起使用。
def deco01(func): def wrapper(*args,**kwargs): print('第一层的装饰器') func(*args,**kwargs) print('第一层装饰器结束') return wrapper def deco02(func): def wrapper(*args,**kwargs): print('这是第二层装饰器') print('第二层装饰器结束') func(*args, **kwargs) return wrapper @deco02 @deco01 def func(a,b,c,name): print('hello ,here is a func') print("result is %d" %(a+b+c)) print('name:{}'.format(name))