一、什么是装饰器
python装饰器(fuctional decorators)就是用于拓展原来函数功能的一种函数,目的是在不改变原函数名(或类名)的情况下,给函数增加新的功能。
这个函数的特殊之处在于它的返回值也是一个函数,这个函数是内嵌“原“”函数的函数。
实例:
单个装饰器:
结果:
多个装饰器包装时:
结果:
二、语法糖
语法糖说明
语法糖(Syntactic sugar):
计算机语言中特殊的某种语法
这种语法对语言的功能并没有影响
对于程序员有更好的易用性
能够增加程序的可读性
简而言之,语法糖就是程序语言中提供[奇技淫巧]的一种手段和方式而已。 通过这类方式编写出来的代码,即好看又好用,好似糖一般的语法。固美其名曰:语法糖
用法:原函数上边紧跟语法糖,进行原函数包装
例:
结果:
三、实例
1、用装饰器实现一个函数计时器,用来统计“字符串连接+“和“连接函数join“运行时间。
代码:
结果:
2、用装饰器实现一个函数计时器,用来统计“列表生成式生成列表“和“map函数生成列表“时间。
代码:
结果:
3、如何保留被装饰函数的函数名字和帮助文档信息
直接输出情况下:
代码:
结果:
使用functools模块改进:
增加@functools.wraps(f), 可以保持当前装饰器去装饰的函数的 name 及的值不变。
代码:
结果:
注:time模块及装饰器其他应用在后边博客中详细讲解