参考链接:
1.什么是装饰器
首先,根据链接文章学习
假设我们需要在函数运行时得到函数名称信息,通过一下方式实现
上面方式不是很理想,需要在执行任意函数时将函数作为参数传入prlog()方法中
logging_util()方法就是装饰器,装饰器函数的语法糖可以简单快捷满足我们的需求
装饰器函数就是将函数包装在函数内,testfun()函数被包装了起来
带参数的装饰器,在函数内部再使用函数decorator包裹一层,并在最外层函数传入level参数即可实现带参数的装饰器
一些疑问点:
为什么swrappe函数return需要(),个人理解,函数装饰器本身就是对另一个函数的修饰,需要在修饰后返回被修饰的函数func(),可以看到下面的acc()函数没有被执行
下面正常执行
那为什么返回wrapper又不需要()?
我个人猜测是返回函数本身不需要+()
带参数的函数装饰器如果去掉函数当中的*args **kwargs会怎样呢
下面是函数中带有*arg**kwargs的
我们删掉并运行代码,可行