装饰器修复技术@wraps

时间:2022-10-25 14:29:22

@wrap修复技术

首先我先说一下wrap的效果

如果没使用@wraps,当A调用了装饰器B的话,即使A.name,返回的会是装饰器B的函数名称,而不是A的函数名称
如果使用了@wraps,当A调用了装饰器B的话,A.__name__返回的会是A函数的名称,而不是饰器B的名称,这也即使常说的@wraps是装饰器的修复技术,实际就是修复还原了A的

首先我们看一下普通函数:

装饰器修复技术@wraps

普通函数执行结果:

装饰器修复技术@wraps

加入装饰器但没有添加修复:

装饰器修复技术@wraps

加入装饰器但没有添加修复执行结果:

装饰器修复技术@wraps

添加装饰修复技术:

装饰器修复技术@wraps

添加装饰修复技术的结果:

装饰器修复技术@wraps