python装饰器扩展之functools.wraps
2018-10-17 14:50 _天枢 阅读(1329) 评论(0) 编辑 收藏 举报我们知道函数被装饰器,装饰后,所有的属性,以及内置函数就失效了。
原因是函数类型变成了warpper类型
示例1:不带wraps装饰器示例
def warfunc(func): def warpper(*args,**kwargs): print('warpper demo') ret = func(*args,**kwargs) return ret return warpper @warfunc def demofunc(): print('func demo') demofunc() print(demofunc)
输出结果:
D:\python36\python3.exe D:/untitled4/temp7.py warpper demo func demo <function warfunc.<locals>.warpper at 0x035432B8>
**从输出结果标记红色部分可以看出,这个函数类型是一个warpper装饰器。那么内置函数也失效了。如help(demofunc())
示例2:带wraps装饰器的
from functools import wraps def warfunc(func): @wraps(func) def warpper(*args,**kwargs): print('warpper demo') ret = func(*args,**kwargs) return ret return warpper @warfunc def demofunc(): print('func demo') demofunc() print(demofunc)
输出结果:
D:\python36\python3.exe D:/untitled4/temp7.py warpper demo func demo <function demofunc at 0x038632B8>
**从输出结果标记红色部分,可以看出,这个类型是一个funciton;需要注意的引用包from functools import wraps
作 者:
天枢
出 处:
http://www.cnblogs.com/yhleng/
关于作者:专注于软件自动化测试领域。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者
直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角
【
推荐】
一下。您的鼓励是作者坚持原创和持续写作的最大动力!