python中wraps的详解

2023-05-16

1.__name__用来显示函数的名称,__doc__用来显示文档字符串也就是(""“文档字符串”"")这里面的内容

2.首先我们来看不加@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

我们来看执行的整个过程:在调用test()函数时,首先会调用装饰器(将test作为参数传入到装饰器中),执wrapper函数,再执行test函数。

但我们可以看到test函数的名字:__name__为wrapper,__doc__为decorator,已经不是原来的test函数了。

接下来,我们使用@wraps

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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____doc__还是原来的,即函数名称和属性没有变换。

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者
https://www.bilibili.com/video/BV1LL4y1h7ny?share_source=copy_web

Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者
https://www.bilibili.com/video/BV1QZ4y1N7YA?share_source=copy_web

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中wraps的详解 的相关文章

随机推荐

  • python装饰器详解-python中的装饰器详解

    在了解装饰器的之前一定要先了解函数作为参数传递 什么是函数内嵌 请参考我之前写的博客函数简介 因为在python里面 函数也是对象 也可以作为参数进行传递 python装饰器本质也是一种特殊函数 它接收的参数是函数对象 然后动态地函数参数添
  • python装饰器详解-python装饰器的详细解析

    什么是装饰器 xff1f python装饰器 xff08 fuctional decorators xff09 就是用于拓展原来函数功能的一种函数 xff0c 目的是在不改变原函数名 或类名 的情况下 xff0c 给函数增加新的功能 这个函
  • 安装oracle出现环境不满足最低要求

    安装win64 11gR2 database 1of2的时候出现这个 xff0c 百度了下解决方法 在oracle安装包找到stage文件夹 然后找到cvu 然后在cvu里面找到cvu prereq xff0c 用记事本打开 增加以下内容
  • mybatis的优缺点

    优点 xff1a 1 基于SQL语法 xff0c 简单易学 2 能了解底层组装过程 3 SQL语句封装在配置文件中 xff0c 便于统一管理与维护 xff0c 降低了程序的耦合度 4 程序调试方便 5 与传统JDBC比较较少了大量的代码量
  • Eclipse打不开,提示查看Log文件

    今天在使用Eclipse的时候 xff0c Eclipse整个黑屏 xff0c 然后果断启动任务管理器 xff0c 关掉了Eclipse然后重启 xff0c 发现Eclipse打不开了 xff0c 然后提示查看log文件 xff0c 然后解
  • equals的用法的注意事项

    String a 61 34 equals的用法 34 String b 61 a equals 34 equals的用法 34 34 相等 34 34 不相等 34 这样的用法有隐患 xff0c 当传入的参数a是空值的时候 xff0c 程
  • svnE175002、E160024以及提交冲突解决方法

    E17005与Eclipse代理有关 xff0c 将代理勾选掉 xff0c 把active provider 改为Direct 即可 E160024 是以为有的文件过期了 xff0c 右键更新即可 最后 xff0c svn代码提交冲突的时候
  • break和continue的区别

    1 一般的continue会退回最内层循环的开头 xff08 并继续执行 xff09 2 带标签的continue会到达标签的位置 xff0c 并重新进入紧接在那个标签后面的循环 3 一般的break会中断并跳出当前循环 4 带标签的bre
  • samba服务常用命令

    sudo vim etc samba smb conf 里增添用户 span class token punctuation span bsp span class token punctuation span comment span c
  • 用mac进行图片的自由裁剪

    用mac上自带的图片预览工具 xff0c 即可完成对图片的自由裁剪
  • WEB项目部署到Linux下无法访问html、css、js等静态文件的解决

    WEB项目 xff0c 在自己本机 xff08 windows xff09 下通过Tomcat访问 一切正常 部署到Linux下的Tomcat 进行访问 除了 do接口和jsp页面能访问外 其他的都不能访问 原因 xff1a 默认80端口
  • Java规范的三种注释方式

    在学习开发中药养成良好的编码习惯 xff0c 规整的代码格式会为程序日后的维护工作提供便利 在此对编码规则做了以下总结 xff1a 1 每条语句尽量单独占一行 xff0c 每条语句都要以分号结束 xff1b 2 在声明变量时 xff0c 尽
  • Tensorflow2.5安装(安装问题,这一篇全解决)

    恭喜你发现全网最简单最详细的Tensorflow安装教程 xff01 本文将给出2 5版本的具体配置 xff0c 若要安装其他版本也可参照本文的思路 与过去版本对比 xff0c 你可以感受到来自Tensorflow2 5的善意 xff1a
  • linux嵌入式arm基础笔记5之录音与播放

    1 粤嵌GEC6818开发板介绍 http www gec lab com arm show 72 html 2 粤嵌GEC6818平台介绍及其开发板配置 操作系统 心若十年的博客 CSDN博客 https blog csdn net qq
  • C++应用之线程池ThreadPool

    include 34 ThreadPool h 34 include 34 StopWatch h 34 include lt thread gt include lt chrono gt include lt iostream gt vo
  • Centeros最小化安装后很多常用命令无法使用(一键安装linux常用命令)

    运行如下命令立即解决问题 最小化安装系统后还会有一些基本的工具没装 xff0c 可采用yum方式批量安装 xff0c 也可以使用哪个安装哪个 yum y install wget setuptool system config firewa
  • 【从零开始的SDN学习之路】之闲话Neutron与SDN的联系

    闲话Neutron与SDN的联系 前言一 OpenStack中的网络发展二 Neutron是不是SDN xff1f 前言 OpenStack作为当前最富盛名的云计算管理工具 xff0c 其服务覆盖了网络 虚拟化 操作系统 服务器等各个方面
  • ESP8266(ESP模块)Arduino开发环境快速搭建方法--含网盘离线文件

    目录 1 ESP8266简介 1 1 乐鑫ESP8266 1 2 安信可ESP模组 2 ESP8266开发 3 开发环境搭建 4 网盘文件离线安装 1 ESP8266简介 1 1 乐鑫ESP8266 乐鑫公司的提供的ESP8266 系列模组
  • 解决Ubuntu虚拟机地无法上网问题

    虚拟机软件 xff1a VMware xff0c 操作系统 xff1a Ubuntu20 04 1 笔者安装好Unbutu20 04 1的虚拟机之后一直遇到一个问题 xff0c 网络图标不显示 xff0c 网络也不可用 每次都要把 虚拟网络
  • python中wraps的详解

    1 name 用来显示函数的名称 xff0c doc 用来显示文档字符串也就是 34 34 文档字符串 34 34 这里面的内容 2 首先我们来看不加 64 wraps的例子 span class token keyword def spa