day11 python之函数装饰器
一,什么是装饰器? 装饰器本质上就是一个python函数,他可以让其他函数在 不需要做任何代码变动的前提下,增加额外的功能 ,装饰器的 返回值也是一个函数对象 。 装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景。 二,装饰器的形成过程。 现在我有一个需求,我想让你测试这个函数的执行时间,在不改变这个函数代码的情况下: import time def func1(): print('in func1') def timer(func): start = time.time() func() print(time.time() - start) timer(func1) 上面的代码输出了func1()函数的运行时间,但是我们计算func1()函数的运行时间时,需要调用的是timer(func)函数 有没有办法直接调用func1()函数就能计算func1()函数运行时间呢? 如果让 func1 = timer 呢? 可是timer()函数需要一个函数参数,而我们的 func1 是不需要参数的,显然不行 那该怎么实现呢? 换个思路, timer不能赋值给func1,但是我们可以给timer指定一个函数返回值,将他赋值给func1 那么执行 func1() 时就相当于执行 这个用来赋值的函数.而这个函数在timer()函数内,可以调用timer()函数的参数func