@wraps()装饰器的作用
很多python代码中有一个默认装饰器,大概的样子为如下:
@wraps(func)
@functools.wraps(func)
然而去掉这个装饰器程序运行也不受影响,所以非常疑惑这个装饰器的作用,所以写了如下的测试代码:
# coding = utf-8from functools import wrapsdef decoretor(func):def wrapper(*args, **kwargs):'''my decoretor'''return func(*args, **kwargs)return wrapper@decoretor def myfunc():'''my function'''print('my function')if __name__ == '__main__':print((myfunc.__doc__, myfunc.__name__))
这个代码的执行输出为:
('my decoretor', 'wrapper')
这说明myfunc()函数被装饰@decoretor装饰后,myfun()失去了本身的属性,编程了装饰器函数内部的属性,这样就改变了myfunc函数的本身的属性。再查看代码和调试的时候会产生歧义,所以我们需要消除这种歧义,所以使用@wrapper装饰器来做这个工作,看下面代码的输出:
# coding = utf-8from functools import wrapsdef decoretor(func):@wraps(func)def wrapper(*args, **kwargs):'''my decoretor'''return func(*args, **kwargs)return wrapper@decoretor def myfunc():'''my function'''print('my function')if __name__ == '__main__':print((myfunc.__doc__, myfunc.__name__))
这个代码的执行结果为
('my function', 'myfunc')
所以加入代码@wraps(func)后,用decoretor再装饰myfunc代码后,还是原来myfunc的属性。
@wraps()装饰器的作用相关推荐
- python内置哪些装饰器_Python内置的wraps装饰器有什么用
Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...
- python中装饰器的作用_Python装饰器详解,详细介绍它的应用场景
装饰器的应用场景附加功能 数据的清理或添加:函数参数类型验证 @require_ints 类似请求前拦截数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改为函数提供额外的数据 moc ...
- python装饰器作用-python中装饰器的作用
装饰器的作用就是用一个新函数封装旧函数(是旧函数代码不变的情况下增加功能)然后会返回一个新函数,新函数就叫做装饰器,一般为了简化装饰器会用语法糖@新函数来简化 例子: 这是一段代码,但功能太少,要对这 ...
- python装饰器作用-Python 装饰器的作用
python装饰器的作用,我是这么理解的, 比如本来已经有几个写好的函数,这几个函数的返回值都是list,现在我想要它们都返回str型的值,一个个改函数太累,也容易出错,装饰器能解决这样的问题,它能对 ...
- python中装饰器的作用_Python中装饰器的用法
装饰器的作用 当我们需要为函数拓展新的功能,但是又不能修改函数的内部结构时,就可以通过装饰器来完成.通过装饰器为函数拓展功能符合"对于扩展是开放的,对于修改是封闭的"这一开闭原则. ...
- python中装饰器的作用_如何理解Python装饰器
展开全部 理解Python中的装饰器 @makebold @makeitalic def say(): return "Hello" 打印出如2113下的输出: Hello 你会怎 ...
- python带参数的装饰器的作用_Python带参数的装饰器运行原理解析
关于装饰器的理解,特别像<盗梦空间>中的进入梦境和从梦境出来的过程,一层一层的深入梦境,然后又一层一层的返回,被带入梦境的是被装饰的函数,装饰器就是使人入梦的工具. 上代码: from f ...
- python functools import wraps_Python - 关于functools模块的wraps装饰器用途
#有关wraps的源码,有兴趣的可以自行研究下 WRAPPER_ASSIGNMENTS= ('__module__', '__name__', '__qualname__', '__doc__','_ ...
- 深入理解python装饰器
前言 你学习python的时候一定也遇到了装饰器,但是很多学习教程对装饰器的解释都是绕来绕去的,把初学者都给绕的云里雾里,我想读者你一定有类似的经历对吧?不过不要着急,只要你仔细用心的观看我这篇文章之 ...
最新文章
- 英特尔蚕食AMD和NVIDIA?
- 安全测试之XSS攻击
- USART_GetITStatus和USART_GetFlagStatus的区别
- 两个gcc_KDD 2020 | GCC:图上的Contrastive Coding
- 红橙Darren视频笔记 view的绘制流程(下)基于API27
- vue solt 属性浅析
- 在Java中应用函数式编程请小心!
- 最基础的Python的socket编程入门教程
- DevExpress v15.1:Reporting控件功能增强(二)
- Osql\sqlcmd工具管理 SQL Server
- document.body、document.documentElement和window获取视窗大小的差别
- vs2017激活密钥
- matlab在循环中保存jpg格式_matlab中的图片保存方法
- python图片标记_python提取那些被“标记”照片的实例详解
- 提高iOS开发效率的方法和工具
- 网易2019实习生招聘算法题(一)
- 基因-高通量测序-变异检测
- 发光二极管二极管引脚_LCD? 发光二极管? 等离子体? HDTV技术入门指南
- 机器学习如何驱动业务实践?你想知道的都在这!
- 全球与中国小龙虾市场深度研究分析报告