简介:
装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。
比如说我们写flask,路由就是用装饰器定义的。如果写权限控制,那么权限控制一般也是由装饰器来实现的。日志记录,一般也可以通过装饰器来实现。
简单说,就是为了给某些函数增加一种或几种功能的做法。
下面举例实现。
一:基本函数
1.源码
from time import sleep def watch_movie(): print('看电影') sleep(3) print('The End') if __name__ == '__main__': watch_movie()
2.执行结果
代码很简单,先打印看电影,间隔3秒,打印The End。
二:装饰器原理
1.目标:计算函数运行时间
2.源码
from time import sleep, time def ceal_time(): before = time() watch_movie() after = time() print('函数运行%s秒' % (after - before)) def watch_movie(): print('看电影') sleep(3) print('The End') if __name__ == '__main__': ceal_time()
3.执行结果
代码很简单,先打印看电影,间隔3秒,打印The End,然后打印函数运行计时。
4.分析
我们把一个函数放进另一个函数去运行,这就是装饰器的基本工作原理。
三:改造计时函数为通用函数
1.目标:把计算函数运行时间这个功能,适配给不同的函数。
2.源码
from time import sleep, time def ceal_time(fun): before = time() fun() after = time() print('函数运行%s秒' % (after - before)) def watch_movie(): print('看电影') sleep(3) print('The End') def play_game(): print('玩游戏') sleep(3) print('Game Over') if __name__ == '__main__': ceal_time(watch_movie) ceal_time(play_game)
3.执行结果