• 为什么要用wraps:Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),而我们不希望原来函数的属性被覆盖。
  • 用法:Python的functools包中提供了一个叫wraps的装饰器来消除这样的副作用。**写一个装饰器的时候,在实现之前加上@wrap(func) **,它能保留原有函数的名称和doc string。

参考自:python装饰器的wraps作用

例子:

  • 不加wraps

from functools import wraps
def my_decorator(func):def wrapper(*args, **kwargs):'''decorator'''print('Calling decorated function...')return func(*args, **kwargs)return wrapper  @my_decorator
def example():"""Docstring""" print('Called example function')
print(example.__name__, example.__doc__)
输出:
('wrapper', 'decorator')
[Finished in 0.2s]
  • 加wraps
from functools import wraps
def my_decorator(func):@wraps(func)             # wraps的用法:写一个装饰器的时候,最好在实现之前加上functools的wrapdef wrapper(*args, **kwargs):'''decorator'''print('Calling decorated function...')return func(*args, **kwargs)return wrapper  @my_decorator
def example():"""Docstring""" print('Called example function')
print(example.__name__, example.__doc__)输出:
('example', 'Docstring')
[Finished in 0.5s]

python装饰器wraps相关推荐

  1. python装饰器-python修饰器(装饰器)以及wraps

    Python装饰器(decorator)是在程序开发中经常使用到的功能,合理使用装饰器,能让我们的程序如虎添翼. 装饰器的引入 初期及问题的诞生 假如现在在一个公司,有A B C三个业务部门,还有S一 ...

  2. python装饰器原理wraps(method)(self)_python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变...

    Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的de ...

  3. python wraps函数_python装饰器---@wraps

    BEGIN: python装饰器 装饰器(Decorators)是Python的一个重要部分.简单地说:装饰器是修改其他函数的功能的函数.他们有助于让我们的代码更简短,也更Pythonic(Pytho ...

  4. Python装饰器的神奇功能:自动打印每个方法耗时

    问题: 运行代码时,尤其对于大型项目需要分析每个环节方法耗时的.每个方法前后都写计算耗时及日志打印太繁琐了,而且代码不精简. 解决: Python装饰器类似于Spring的 AOP(Aspect Or ...

  5. [转]python 装饰器

    以前你有没有这样一段经历:很久之前你写过一个函数,现在你突然有了个想法就是你想看看,以前那个函数在你数据集上的运行时间是多少,这时候你可以修改之前代码为它加上计时的功能,但是这样的话是不是还要大体读读 ...

  6. python装饰器与闭包_Python 装饰器和闭包

    Python 装饰器和闭包 装饰器是 Python 中常见的语法糖,这篇文章讲了闭包和装饰器的原理,并且分析了函数中变量的作用域,以及尝试总结了常见的坑. 装饰器基础 首先来看看装饰器的定义:装饰器本 ...

  7. Python 装饰器记录总结 (终极版)

    Python 装饰器记录总结 (终极版) 原文链接:http://magicroc.com/2017/04/10/Python装饰器记录总结/ 装饰器是一个函数,一个用来包装函数的函数,装饰器在函数申 ...

  8. python装饰器函数-python之路——装饰器函数

    阅读目录 楔子 作为一个会写函数的python开发,我们从今天开始要去公司上班了.写了一个函数,就交给其他开发用了. deffunc1():print('in func1') 季度末,公司的领导要给大 ...

  9. python装饰器原理-看完这篇文章还不懂Python装饰器?

    原标题:看完这篇文章还不懂Python装饰器? 1.必备 2.需求来了 初创公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作.redis调用.监控API等功能.业务部门 ...

最新文章

  1. 银行程序代发工资的方法
  2. Spring 配置文件的差异
  3. javascript的缓动效果
  4. 贫穷中透着零基础的单人制作游戏手册之二:做游戏不光靠创意
  5. hdu4336-Card Collector【min-max容斥,期望概率】
  6. 解决:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect
  7. pcb结构链表_lwip中tcp_pcb结构体及其组成链表
  8. 基于Adobe LCDS产品的数据访问解决方案Part4
  9. CentOS Bash 命令补全增强软件包 bash-completion
  10. 可视化设计的时候应该注意什么
  11. Nginx的Upstream负载均衡模块
  12. 挑战程序设计竞赛:三角形
  13. 登记车架号/VIN码用车架号识别
  14. 移动硬盘计算机无图标,移动硬盘不显示盘符但右下角有显示USB图标解决方法
  15. h264流头类型分辨方法
  16. 我在华为的十年----徐家俊
  17. 8. Celery 4.3.0 Periodic Tasks 周期性任务调度
  18. 用Python分析北京二手房房价
  19. 如何删除Mac下载PS后莫名其妙多出来的几个程序
  20. Mapbox 绘制区域边界线 鼠标悬停效果 vue

热门文章

  1. 大学生活,该如何度过?
  2. Python爬取【下厨房】网页菜名、所需材料和菜名所对应详情页的的URL实例
  3. linux中的.so文件和.a文件
  4. Linux介绍和基础操作
  5. 10种网络安全攻击方式详解!
  6. 全志H616----火焰传感器
  7. FBI:勒索软件是可怕的,但另一个骗局正在使受害者付出更多代价
  8. Windows C++ yolov5->ONNX->TensoRT (ResNet、FCN)
  9. win10永恒之黑漏洞复现
  10. 01 如何设置远程机器的转发