@wraps
函数的装饰器修复技术,可使被装饰的函数在增加了新功能的前提下,不改变原函数名称,还继续使用原函数的注释内容;
方便了上下文环境中不去更改原来使用的函数地方的函数名;
使用方法:
from functools import wraps def 装饰器(func): #写装饰器
@wraps(func) #使用装饰器修复技术
def inner(*args,**kwargs):
print('函数之前执行的代码')
func(*args,**kwargs)
print('函数之后执行的代码')
return inner @装饰器 #加装饰器
def outer(a):
'''
函数的作用注释:被修饰的原函数
:param a:参数a解释
:return:函数返回值解释
'''
def inner():
print('内部函数',a)
return inner() outer('你好') print("打印函数名称:",outer.__name__) #打印函数名称
print('打印函数注释:',outer.__doc__) #打印函数注释
执行结果:
函数之前执行的代码
函数之后执行的代码
打印函数名称: outer
打印函数注释:
函数的作用注释:被修饰的原函数
:param a:参数a解释
:return:函数返回值解释
可以看出@wraps体现出的作用,方便了上下文环境中不去更改原来使用的函数地方的函数名