Python 装饰器中的@wraps的作用:
    装饰器的作用:    在不改变原有功能代码的基础上,添加额外的功能,如用户验证等
    @wraps(view_func)的作用:     不改变使用装饰器原有函数的结构(如__name__, __doc__)
    不使用wraps可能出现的ERROR:   view_func...endpoint...map...

如果没使用@wraps,当A调用了装饰器B的话,即使A.name,返回的会是装饰器B的函数名称,而不是A的函数名称
如果使用了@wraps,当A调用了装饰器B的话,A.__name__返回的会是A函数的名称,而不是饰器B的名称,这也即使常说的@wraps是装饰器的修复技术,实际就是修复还原了A的__name__变量,同理__doc__变量也是一样。
具体例子如下:

1.普通函数

2.添加装饰器,但不添加@warps修复

 

 3.添加装饰器修复技术@wraps

最新文章

  1. 通过ipv6访问 g o o g l e
  2. [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )
  3. 时间函数 time.h 详解
  4. 剑指Offer:面试题11——数值的整数次方(java实现)
  5. ios中@class和 #import,两种方式的讨论
  6. [转] Portable Trac 简单介绍 - 兼谈为什么不选择 Redmine
  7. jquery图片上传
  8. 实Schur分解
  9. 入门前端之HTML
  10. Spring Mvc Url和参数名称忽略大小写
  11. SharePoint 2016 配置工作流环境
  12. PS小实验-去除水印
  13. Git以及TortoiseGit的下载安装使用
  14. TLS调试微信
  15. 将Emacs Org任务树导出至Freeplane思维导图
  16. Jquery封装的Ajax
  17. 一键脚本清理DEBIAN系统无用组件 减少系统资源
  18. 如何判断是否为同一个App,Ionic3如何修改包名
  19. vue2.0 之事件处理器
  20. python f-string

热门文章

  1. 《剑指offer》面试题7 用两个栈实现队列 Java版
  2. go 学习之bufio
  3. 6个常用Java 源代码 保护工具(混淆、加密、底层)
  4. 我心中的ASP.NET Core 新核心对象WebHost(二)
  5. Ajax爬取豆瓣电影目录(Python)
  6. 【新手向】一个超简单的jquery.mCustomScrollbar滚动条插件Demo
  7. 20180209-shutil模块
  8. quotacheck - 扫描文件系统,创建,检测并修补配额文件
  9. 6层PCB设计技巧和步骤
  10. java 抽象的概念 抽象类的使用