Python21期 day3 之装饰器
一、什么是装饰器
装饰器本质上是一个Python函数,他可以让其他函数在不需要做任何代码变动的情况下,增加额外的功能,装饰器的返回值也是一个函数对象
装饰器的应用场景:插入日志,性能测试,事物处理,缓存等场景
二、装饰器形成过程
简单版装饰器
import time
def func1():
print('in func1')
def timer(func):
def inner():
start = time.time()
func()
print(time.time() - start)
return inner
func1 = timer(func1)
func1()
如果有多个函数,都想实现测试执行时间的功能,这种做法有点麻烦,因为函数名可能不相同,对此Python提供了语法糖功能
import time def timer(func): def inner(a): start = time.time() func(a) print(time.time() - start) return inner @timer def func1(a): print(a) func1(1)
被装饰函数带参数
import time def wrapper(f1): def inner(*args,**kwargs): start_time = time.time() ret = f1(*args,**kwargs) end_time = time.time() print(end_time - start_time) return ret return inner @wrapper def func1(a,b): print(a,b) print('晚上回去吃烧烤') time.sleep(1) return 666 func1(111,222)

浙公网安备 33010602011771号