装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象
应用场景:比如插入日志、性能测试、事务处理、缓存、权限校验等场景
一、装饰器的简单事例
def timer(func): def inner(*args,**kwargs): """执行函数前要做的""" ret=func(*args,**kwargs) """执行函数后要做的""" return ret return inner @timer def func(): print('我是一只小小鸟') func()#我是一只小小鸟
在修饰的func函数前打印"哈哈哈",函数执行后打印"呵呵"
def timer(func): def inner(*args,**kwargs): print('哈哈哈') ret=func(*args,**kwargs) print('呵呵呵') return ret return inner @timer def func(): print('我是一只小小鸟') func() """ 哈哈哈 我是一只小小鸟 呵呵呵 """
二、带参数的装饰器
def timer(func): def inner(*args,**kwargs): print('哈哈哈') ret=func(*args,**kwargs) print('呵呵呵') return ret return inner @timer def func(name): print('%s是一只小小鸟'%name) func('abc') """ 哈哈哈 abc是一只小小鸟 呵呵呵 """