DAY27装饰器@XXX
浙大疏锦行今日内容核心装饰器Decorator1. 装饰器是什么本质一个函数它接收另一个函数作为参数返回一个新函数通常叫wrapper在不修改原函数代码的前提下为原函数增加额外功能如计时、日志、权限校验等。目的遵循DRY 原则Don’t Repeat Yourself将重复的辅助逻辑如计时抽离出来让核心函数更干净、可读性更强。2. 装饰器的基本结构无参数、无返回值defdisplay_time(func):defwrapper():# 前置操作starttime.time()func()# 调用原函数# 后置操作print(time.time()-start)returnwrapper# 返回新函数而非执行它使用display_time语法糖等价于prime_nums display_time(prime_nums)。调用prime_nums()时实际执行的是wrapper()。3. 带参数的被装饰函数如何处理wrapper(*args, **kwargs)接收任意位置参数和关键字参数然后原样传给func(*args, **kwargs)。这样装饰器就可以复用于任何参数形式的函数。4. 带返回值的被装饰函数如何处理wrapper中需要result func(...)并return result保证原函数的返回值能传递出去。5. 执行顺序单步调试会看到定义display_time定义prime_nums并立即应用display_time→ 执行display_time(prime_nums)得到wrapper此时prime_nums这个名字被重新绑定到wrapper调用prime_nums()→ 进入wrapper→ 执行计时 → 调用原始的prime_nums即func→ 打印质数 → 输出耗时你笔记中range(2, num)的运用在判断素数is_prime(num)中foriinrange(2,num):ifnum%i0:returnFalserange(2, num)生成从 2 到num-1的整数序列用于测试所有可能的除数。如果num能被其中任何一个数整除则不是素数否则是素数。注意num2时range(2,2)为空循环不执行直接返回True所以笔记中单独处理了num2。装饰器与普通函数计时对比普通写法计时代码混在prime_nums内部干扰核心逻辑。装饰器写法计时逻辑独立成display_timeprime_nums只关心找质数代码更清晰且计时功能可复用于其他函数。今日总结一句话装饰器是“函数的函数”通过语法糖将原函数包装在不改动原函数内部代码的情况下为其增加额外能力。理解其本质是func decorator(func)的替换过程并掌握*args, **kwargs传递参数以及return返回值就能应对绝大多数场景。今日作业def logger(func):def wrapper(*args, **kwargs):print(f开始执行函数 {func.name}参数: {args}, {kwargs}“)result func(*args, **kwargs)print(f函数 {func.name} 执行完毕返回值: {result}”)return resultreturn wrapperloggerdef multiply(a, b):return a * bmultiply(2, 3)

相关新闻

UnrealSharp终极指南:用C开发Unreal Engine 5的完整教程

UnrealSharp终极指南:用C开发Unreal Engine 5的完整教程

UnrealSharp终极指南:用C#开发Unreal Engine 5的完整教程 【免费下载链接】UnrealSharp UnrealSharp is a plugin to Unreal Engine 5, which enables developers to create games using C# (.NET10) with Hot Reload 项目地址: https://gitcode.com/gh_mirrors/u…

2026/10/25 18:39:43 阅读更多 →
颠覆性无线传输革命:3DS FBI Link让你的Mac变身3DS游戏智能管家

颠覆性无线传输革命:3DS FBI Link让你的Mac变身3DS游戏智能管家

颠覆性无线传输革命:3DS FBI Link让你的Mac变身3DS游戏智能管家 【免费下载链接】3DS-FBI-Link Mac app to graphically push CIAs to FBI. Extra features over servefiles and Boop. 项目地址: https://gitcode.com/gh_mirrors/3d/3DS-FBI-Link 还在为3DS游…

2026/10/26 0:01:10 阅读更多 →
BepInEx 6.0 IL2CPP插件框架架构深度解析:从动态注入到稳定运行的技术演进

BepInEx 6.0 IL2CPP插件框架架构深度解析:从动态注入到稳定运行的技术演进

BepInEx 6.0 IL2CPP插件框架架构深度解析:从动态注入到稳定运行的技术演进 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx作为Unity游戏生态中最重要的插件框架…

2026/10/26 1:25:33 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:01:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →