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

发布时间:2026/9/8 17:39:18

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/9/8 17:39:18

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

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

2026/9/8 17:39:18

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

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

2026/9/8 17:39:18

SL-WX-FlipCard 翻转卡片组件

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

2026/9/8 19:49:39

SVM实战:银行客户流失预测完整流程与调参指南

简介:压缩包以银行客户流失预测为案例,完整展示支持向量机(SVM)算法在分类问题上的落地流程,适合机器学习初学者、金融数据分析人员及有课程设计需求的学生。压缩包内共4个文件,包括2个CSV数据集、1个Pytho…

2026/9/8 19:49:39

简单并差集在学生管理系统中的应用

在最近的学习中,我对并查集学得一般,懂其原理,但用得不深,不过在最近Java的期末项目里,我的主题是高考模式下的学生成绩管理系统,我的思考就停留在了新高考的312的选科目上,那是不是同组合的人要…

2026/9/8 19:49:39

采用单级PFC+LLC集成架构,因为变压器的一次原边是一端接地的,类似变压器充放电原理。半桥开关电源和LLC开关电源在开关管回路电压上的核心区别。注意文中传统半桥和半桥LLC区别

在单级PFCLLC集成架构中,变压器原边一端接地的设计确实与传统半桥结构不同,其电压对称性由谐振网络和开关时序动态生成,而非依赖分压电容‌。这种设计通过类似“充放电交替反转”的机制,实现能量的高效传递。一、一次侧一端接地的…

2026/9/8 19:44:39

Clawdbot深度解析:智能体编码、云端沙箱与无人值守自动化

1. Clawdbot是什么,以及它为什么值得单独拿出来聊Clawdbot这个项目名,最近在AI编程圈子里出现的频率明显高了起来。虽然和Claude系工具存在一定血缘关系,但Clawdbot并不是又一个简单包装的编码助手,而是一套以"agentic codin…

2026/9/8 7:15:10

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/8 7:15:10

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/8 0:01:49

踩多轮坑才跑通|OpenClaw 3.1.0 双平台本地 AI 自动化搭建实操实录

🔹 工具简述 OpenClaw 是一款备受开发者与办公人群青睐的开源本地智能工具,凭借离线本地运行、可视化图形面板、全流程自主任务处理三大核心特点,积累了众多忠实用户。与普通对话类 AI 产品不同,它能够直接调用电脑的软硬件操作权…

2026/9/8 0:01:50

拒绝复杂命令行,Hermes Agent 一键包快速解锁智能办公能力

🔍前言 不少想要体验 Hermes Agent 办公能力的使用者,往往会被复杂的环境配置拦住使用脚步。手动下载匹配依赖、反复调整系统目录、处理命令行持续报错、修复权限异常、补全丢失核心文件等一系列操作,对普通使用者而言门槛较高,很…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/7 22:45:59

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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