Python中的装饰器@ 就是装饰器,后面紧跟着函数名。且这个函数必须是一个闭包函数。装饰器下面要紧跟着一个函数,当调用func()的时候,会直接通过装饰器去调用outer函数,且将函数名作为参数传给outer,走到def inner():的时候,此时只是会告诉计算机创建了这么一个方法,并不会去调用inner,当return inner的时候,会去调用inner函数先打印出func()函数的内容,再打印run的结果。示意如下:
装饰器的目的就是给现有的函数进行装饰(增加功能)。
当装饰器带参数的时候,就需要写三层的闭包函数还完成
num = 3 装饰器的参数,装饰器自己接受
fn = func 要装饰的函数由middle中的参数fn接受
*args = jack 调用的函数的参数由inner的参数来接受
**kwargs = rose 调用的函数的参数由inner的参数来接受