给已有函数增加额外功能的函数,本质上就是一个闭包函数
符合了开发中的封闭开放原则
在不改变原有函数的源代码的情况下,给函数增加新的功能
不修改已有函数的源代码
不修改已有函数的调用方式
给已有函数增加额外的功能

① 定义一个装饰器

② 使用装饰器装饰函数

装饰器就是把一个函数当做参数传递给闭包中的外部函数,同时在内部函数中使用这个函数,并给他添加新的功能
@ 装饰器名称
使用装饰器实现函数执行时间的统计





装饰过程
语法格式: @装饰器(参数,…)
装饰器只能接收一个参数,并且还是函数类型

通过定义一个类来装饰函数


想要让类的实例对象能够像函数一样进行调用,需要在类里面使用call方法,把类的实例变成可调用对象
类装饰器的装饰函数功能在call方法里面进行添加