装饰器(Decorator)是一种特殊的函数,用于修改其他函数的功能,而不需要对其源代码进行修改。它本质上是一个闭包,接受一个函数作为参数,并返回一个新的函数。装饰器的语法使用 @ 符号在函数定义前进行修饰。
@符号的使用:通过@符号和装饰器名实现装饰器函数与被装饰函数联系,当调用func()函数时,程序会自动调用装饰器函数的代码
带参数的装饰器:因为装饰器也是一个函数,即装饰器本身也可以带参数,此时装饰器需要再多一层的内嵌函数
第一行先定义装饰器函数,由3个函数嵌套而成,最外层函数有一个装饰器自带的参数,内层函数不变,相当于闭包的嵌套