首页 > 编程语言 >一些关于python装饰器的理解

一些关于python装饰器的理解

时间:2023-11-28 18:00:12浏览次数:34  
标签:功能 调用 函数 python wrapper 理解 装饰 原函数

装饰器:给现有的模块增添新的小功能,可以对原函数进行功能扩展,而且还不需要修改原函数的内容,也不需要修改原函数的调用

例:已有函数A B C 想在其基础上再加上一个小功能X

def deco(A):
  def wrapper(*args,**kwargs):
    res=A(*args,**kwargs)
    return res
  return wrapper

其实wrapper就是实现了A+X的新功能函数
装饰器做的①传入你想要添加小功能X的函数

      ② 然后返回实现了添加功能的函数名wrapper

最后再调用wrapper

但一般来说为了使得添加了功能X的A看上去还是A 我们一般把A=wrapper 然后再调用A() 实际上就是调用wrapper 两者没有区别

标签:功能,调用,函数,python,wrapper,理解,装饰,原函数
From: https://www.cnblogs.com/yyyjw/p/17862580.html

相关文章

  • py02-python之线程
    1、线程:(1)讲程是分配资源的最小单位,一旦创建一个进程就会分配一定的资源,就像两个人聊OQ就需要打开两个QQ软件一样,是比较浪费资源的。线程是程序执行的最小单位,实际上进程只负责分配资源,而利用这些资源执行程序的是线程,也就说进程是线程的容器,一个进程中最少有一个线程来负责执行......
  • Python-JSON文件操作简化的工具库,支持读取和修改
    这是一个关于python操控json的工具类可以利用get方法以路径的形式查看内容,输出的格式为列表或字典change方法用于修改指定路径下的内容,支持修改内容为字典和列表的形式修改后使用save方法进行保存以下是代码:importjsonimporttimeimportrandomclassError_message:......
  • py01-python之进程
    一、进程1、概念(1)并发:在一段时间内交替去执行多个任务。例如对于单核cpu处理多任务,操作系统轮流让各个任务交替执行(任务数量大于CPU的核心数)。(2)并行:在一段时间内真正的同时一起执行多个任务。例如对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的任务,多个内......
  • python保留小数点后几位的方法
    一、保留小数点后n位方法一:使用字符串格式化注意:使用字符串格式化后的是字符串格式a=12.3456print("%.3f"%a)#保留小数点后三位print("%.2f"%a)#保留小数点后两位输出12.34612.35方法二:使用round内置函数注意:使用round后的是浮点数格式a=12.3456a1=round(a......
  • Python常用的数据处理函数和模块
    Python还提供了许多其他用于数据处理和转换的内置函数和模块。以下是一些常用的数据处理函数和模块:sortedsorted(iterable,key=func,reverse=False)用于对可迭代对象进行排序。你可以指定一个可选的key函数来自定义排序规则,以及一个可选的reverse参数来控制升序或降序排......
  • python中列表(list)拼接的三种方法
    你可以使用Python中的列表拼接操作来合并两个或多个列表。Python提供了几种方式来实现列表的拼接,包括使用+运算符、extend()方法和列表解析。以下是这些方法的示例:1.使用+运算符:list1=[1,2,3]list2=[4,5,6]concatenated_list=list1+list2print(concate......
  • python 入门
    type(183)显示的是183的数据类型intprint("183")显示183print(183,172)显示183172age=10name=strehdprint("%d %s"%(age,name))显示的是10strehd还有一张传参形式print(f"  {name}11{age}")显示的是strehd11109//2=49%2=19**2=81%m.nd比如%7.2d,限制了数字的宽度和精度......
  • 使用Python中的tarfile :解决Mac和Linux 打包冲突问题
    Python对tar包的操作目的:兼容linux和macOS系统上都能正常打包和解包起初:在macOS上使用命令tar打得包在linux上根本无法解开。原因:https://blog.csdn.net/qq_44214671/article/details/127804905解决办法:python是兼容MacOS和Linux,直接用Python的tarfile操作tar包。https://do......
  • python脚本中调用django环境
    #在脚本中调用djagno服务importosif__name__=='__main__':#1引入django配置文件os.environ.setdefault('DJANGO_SETTINGS_MODULE','day67.settings')#2让djagno启动importdjangodjango.setup()#3使用表模型fromapp01impor......
  • P3879 TJOI2010 阅读理解
    P3879TJOI2010阅读理解基本想法开一个map组成的数组,然后每篇文章分配一个map。查找的时候在每次都跑一遍。显然MLE了。改进既然如此,录入的时候直接把单词出现对应的文章编号存起来就行,就是开一个map<string,vector<int>>。但是同一篇文章会出现多个单词,需要去重,不......