Python装饰器是什么?一文教你搞懂烦人的Python装饰器!!

发布时间:2026/10/29 17:45:24

Python装饰器是什么?一文教你搞懂烦人的Python装饰器!! 对于学习java的人来说应该知道装饰器是在java中的一种设计模式作用是包装对象场景类似IO流但在python中他的应用就比较广了本质就是语法糖高阶函数用函数包装函数Java 装饰器 用类包装对象运行时动态组合功能Python 装饰器 用函数包装函数定义时静态替换功能一句话概括python中的装饰器就是装饰器 不修改原函数和调用方式给函数额外加一层功能另外python还结合了语法糖举个例子就是加日志def log(): print(我在加班) log()输出就是 我在加班加上日志的话就是这样def log(): print(fINFO_日志开始) print(我在加班) print(fINFO_日志结束) log()输出就是INFO_日志开始 我在加班 INFO_日志结束但是这样就改变了原来的函数本身可能会影响他本来的功能我们有个想法就是将他抽出来def fun(): print(我在上班) def logs(func): print(INFO_日志开始) func() print(INFO_日志结束) logs(fun) 输出就是 INFO_日志开始 我在上班 INFO_日志结束不改函数本身也不改调用方式和闭包的写法差不多只不过装饰器接受的是一个函数装饰器一般就干三件事接收一个函数作为参数嵌套一个 wrapper 函数——在里面调用原函数并附加额外功能返回这个 wrapper 函数一般通用的写法就是用语法糖代替示例话那个函数写法就如下面这样from functools import wraps def cat(func): count 0 wraps(func) #作用保留原来函数的__name__、__doc__名称和注解 wraps 本身是一个有参装饰器它接收 func 作为参数然后把 func 的属性复制给 wrapper def wrapper(*args,**kwargs): nonlocal count count 1 print(f第{count}次调用) return func(*args,**kwargs) return wrapper #直接调用就是 语法糖省略了 c cat(say) c() cat def say(): print(hello) say()输出就是这样第1次调用 hello小结装饰器 闭包 语法糖——不改原函数、不改调用方式给函数加功能wrapper 用*args, **kwargs接所有参数有返回值要 return带参数的装饰器 三层嵌套别忘了functools.wraps装饰器也可以加入参def log(level): def decorator(func): def wrapper(*args, **kwargs): print(f[{level}] 开始执行) result func(*args, **kwargs) print(f[{level}] 执行结束) return result return wrapper return decorator log(levelINFO) def hello(): print(hi) hello()输入为[INFO] 开始执行 hi [INFO] 执行结束写装饰器时必须加 wraps(func) 来保留原函数的 __name__ 和 __doc__wrapper 的参数要写成 *args, **kwargs 来通吃所有参数wrapper 内部一定要 return func(*args, **kwargs) 把原函数的结果传出去使用时无参装饰器不加括号、有参装饰器才加括号多个装饰器叠加时从下往上执行离函数最近的先执行。装饰器在python中经常用来做web路由权限校验日志计时缓存等类似java中的aop切面和缓存等或者公共模块
延伸阅读

更多相关文章

2026/10/25 23:31:47

医学影像深度学习项目复现:心脏分割与疾病诊断全流程指南

简介:这是一份基于深度学习的完整心脏分割与疾病诊断项目资源,包含公开心脏影像数据集及详细的运行环境说明,适合医学图像处理、深度学习方向的科研人员、学生或开发者用于方法复现与二次开发。项目围绕心脏CT/MRI影像的自动分割与疾病早期诊…

2026/10/25 5:10:54

SL-WX-Captcha 行为验证组件(三合一)

SL-WX-Captcha 行为验证组件(三合一) 插件市场 操作视频 组件简介 单一组件统一支持三种主流前端行为验证方式,通过 mode 属性零切换: slide 滑动验证:经典滑块,按住并拖动到底部最右侧即视为通过&#…

2026/10/28 23:04:13

SL-WX-FlipCard 翻转卡片组件

SL-WX-FlipCard 翻转卡片组件 插件市场 操作视频 组件简介 基于 CSS Transform 体系实现的点击翻转卡片组件。内置 7 种切换动画(左右翻转、上下翻转、旋风旋转、淡入淡出、底部滑入、右侧滑入、缩放切换),支持单列 / 多列网格布局、互斥展…

2026/10/29 17:43:09

YOLOv8与InceptionNeNext融合提升小目标检测性能

1. 项目概述:YOLOv8与InceptionNeNext的强强联合在目标检测领域,YOLO系列一直以其实时性和准确性著称。YOLOv8作为该系列的最新版本,在速度和精度之间取得了更好的平衡。然而,在处理小目标和大尺度变化目标时,传统YOLO…

2026/10/29 17:43:09

DeepSeek V4多模态架构与国产芯片适配解析

1. DeepSeek V4技术架构解析:多模态与国产化双突破1.1 原生多模态架构设计DeepSeek V4最引人注目的技术突破在于其原生多模态处理能力。与通过后期拼接实现的"伪多模态"不同,V4从底层架构就为多模态数据处理进行了专门优化。其核心创新点在于&…

2026/10/29 17:43:09

DeepSeek V4多模态大模型架构与部署实践

1. DeepSeek V4技术架构解析DeepSeek V4作为国产大模型的代表作品,其技术架构设计体现了对当前AI领域核心挑战的针对性解决方案。从网络热词中频繁出现的"多模态统一处理"、"多模态融合"等关键词可以看出,该模型在架构层面实现了三大…

2026/10/29 17:43:09

DeepSeek V4大模型架构解析与优化实践

1. DeepSeek V4技术架构深度解析 国产大模型DeepSeek V4的发布确实引发了行业震动。从技术架构来看,这次升级主要体现在三个维度:模型规模、训练方法和硬件适配。根据公开资料推测,V4很可能采用了混合专家模型(MoE)架构,参数规模可…

2026/10/29 17:43:09

STM32F3工程模板从入门到跑通:标准外设库与Keil配置避坑

简介:STM32F3系列基于ARM Cortex-M4内核并集成浮点单元,在实时控制、传感器接口与电机控制等嵌入式场景中表现突出。该工程模板面向使用该平台的开发者和学生,可直接导入IAR或Keil工程文件,连同启动代码、HAL库和系统时钟配置一次…

2026/10/29 17:38:09

MySQL索引原理与B+树优化实践

1. 为什么数据库需要索引? 想象一下,你面前有一本没有目录的百科全书,想要查找"光合作用"的相关内容。唯一的办法就是从第一页开始逐页翻阅,直到找到所需信息。这种线性查找方式在计算机科学中被称为"全表扫描&quo…

2026/10/29 17:05:52

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/29 17:06:02

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/29 17:06:13

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑