被装饰器修饰的函数,名字也会被更改,来看个栗子
def mydecorate(func):
def inside_func():
print("装饰器逻辑")
func()
return inside_func
@mydecorate
def show():
print("this is showshow")
print(show.__name__)
我们发现show函数的名字被更改成inside_func这样就很不爽,被装饰一下名字都丢了,好在python为我们提供了一个方便的方式保持原函数的名字,来看一下更改
from functools import wraps
def mydecorate(func):
@wraps(func)
def inside_func():
print("装饰器逻辑")
func()
return inside_func
@mydecorate
def show():
print("this is showshow")
print(show.__name__)
这里我们在functools模块里导入了wraps 其实他也是一个装饰器,我们只需要在内部函数上带上此装饰器就行了