简述

装饰器的作用: 在不改变原有功能代码的基础上,添加额外的功能,如用户验证等。
@wraps(view_func)的作用: 不改变使用装饰器原有函数的结构(如name, doc)

实例

未使用@wraps()

def my_decorator(func):def wrapper(*args, **kwargs):'''decorator'''print('Decorated function...')return func(*args, **kwargs)return wrapper
@my_decorator
def test():"""Testword"""print('Test function')
test()
print(test.__name__, test.__doc__)

输出:

'''
Decorated function...
Test function
wrapper decorator
'''

使用了@wraps()

from functools import wraps
def my_decorator(func):@wraps(func)def wrapper(*args, **kwargs):'''decorator'''print('Decorated function...')return func(*args, **kwargs)return wrapper
@my_decorator
def test():"""Testword"""print('Test function')
test()
print(test.__name__, test.__doc__)

输出:

'''
Decorated function...
Test function
test Testword
'''

分析:
可以看到后边输出test.__name__与test.__doc__时,输出的是test的信息,这就是@wraps()的作用:不改变使用装饰器原有函数的结构.

__name__:输出函数的名字
__doc__:可以参看在下的上一篇(水文)blog

Python @wraps的用法相关推荐

  1. python装饰器实例-Python装饰器用法实例总结

    本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 一.装饰器是什么 python的装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能, ...

  2. 内置装饰器wraps的用法

    装饰器的作用:再不改变原有功能代码的基础上,为其添加额外的功能.python wraps(内置装饰器)的用法: @wraps(func)的作用:不改变使用装饰器的原有函数func的结构.(比如入参格式 ...

  3. 简单介绍Python中异常处理用法

    这篇文章主要给大家分享的是 Python中异常处理用法,为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,下面来看看文章对此的用法,需要的朋友可以参考一下 为了保证程 ...

  4. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  5. python matplotlib 简单用法

    python matplotlib 简单用法 具体内容请参考官网 代码 import matplotlib.pyplot as plt import numpy as np # 支持中文 plt.rc ...

  6. (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案

    (转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 参考文章: (1)(转)python requests 高级用法 -- 包括SSL 证书错误的解决方案 (2)ht ...

  7. python所有函数用法_Python函数使用方法(高级用法)

    前面章节,已经介绍了 Python 函数的所有基本用法和使用注意事项.但是,Python 函数的用法还远不止此,Python 函数还支持赋值.作为其他函数的参数以及作为其他函数的返回值. 首先,Pyt ...

  8. python的property用法_python @property的用法及含义全面解析

    在接触python时最开始接触的代码,取长方形的长和宽,定义一个长方形类,然后设置长方形的长宽属性,通过实例化的方式调用长和宽,像如下代码一样. class Rectangle(object): de ...

  9. python竞赛_浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

最新文章

  1. 无线节能信标核心板V4-测试-2021-4-3
  2. JVM运行时栈帧结构
  3. MySQL批量查询能返回集合吗_JDBC——查询多条记录,返回对应的对象的集合;查询一条记录,返回对应的对象...
  4. ozf oracle,ORACLE EBS 简称大全
  5. mysql强制禁止使用索引_MYSQL强制使用索引和禁止使用索引
  6. 想都不敢想!这8个神奇“黑科技”原来已经有人弄出来了
  7. 敏捷开发需求文档_需求的长期,敏捷文档
  8. php狼和兔子算法,PHP基于递归算法解决兔子生兔子问题php技巧
  9. 报错,ERROR 2572 --- [MessageBroker-2] o.h.engine.jdbc.spi.SqlExceptionHelper : Column ‘create_by‘
  10. GitLab CTO:开源是打造优秀软件的核心
  11. java错误:需要《标识符》
  12. 最新好用的服装零售进销存软件排行榜
  13. 一级域名二级域名区别
  14. iphone ios 手势
  15. 解决windows文件名过长无法删除的问题
  16. 单片机c语言编写注解,单片机C语言程序注解
  17. I2C协议研读(九):十位寻址
  18. ESP32-CAM、ESP8266、WIFI、蓝牙、单片机、热点创建嵌入式DNS服务器
  19. 我的世界服务器头像文件,端游我的世界怎么换头像,端游我的世界怎么换头像框...
  20. 人工智能科技如何为航空业“保驾护航”?

热门文章

  1. 【渝粤题库】陕西师范大学152110 行政秘书与公文写作
  2. 【机器学习】强化学习:马尔科夫决策过程(Markov decision process)
  3. 普洱熟茶买来千万不要打开立马喝,放一放好喝千倍!
  4. CDMA网络RF优化方法
  5. AlphaBlend参数BLENDFUNCTION
  6. JWT Claims
  7. c语言getline作用,C++中getline()的用法详解
  8. iPhone概念机终于被三星做出来了
  9. golang代理websocket请求
  10. [Android显示学习]RenderThread渲染