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/7/23 8:01:51 阅读更多 →
颠覆性无线传输革命: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/7/22 0:30:06 阅读更多 →
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/7/23 22:37:45 阅读更多 →

最新新闻

Windows下VSCode配置C++20与Asio异步编程开发环境

Windows下VSCode配置C++20与Asio异步编程开发环境

1. 项目概述:为什么要在Windows上用VSCode搞C20和Asio?如果你是一个在Windows平台上折腾C网络或异步编程的开发者,大概率经历过这样的场景:想用上C20里那些现代又好用的协程(Coroutines)、概念(…

2026/7/24 16:02:42 阅读更多 →
掌握AI Agent:开启未来十年职业新机遇,小白也能抓住的收藏级干货!

掌握AI Agent:开启未来十年职业新机遇,小白也能抓住的收藏级干货!

本文探讨了AI Agent作为未来十年核心机遇的重要性,从AI工具到AI员工的转变,以及普通人如何成为FDE(前端部署工程师)。文章详细阐述了搭建个人AI员工体系的方法,强调了Token消耗、多线程并发等关键指标,并提…

2026/7/24 16:02:42 阅读更多 →
AWS AI应用安全实践:基于OWASP Agentic AI Top 10的防护指南

AWS AI应用安全实践:基于OWASP Agentic AI Top 10的防护指南

1. 先搞清楚 OWASP Agentic AI Top 10 到底解决什么问题 如果你在 AWS 上部署或开发 AI 应用,特别是涉及大模型、AI Agent 或 RAG 系统,那 OWASP 这份新清单就是接下来必须关注的实操指南。它不像传统 OWASP Top 10 只聚焦 Web 漏洞,而是专门…

2026/7/24 16:02:42 阅读更多 →
Godot 4.2入门实战:从零开发2D躲避游戏《Dodge the Creeps!》

Godot 4.2入门实战:从零开发2D躲避游戏《Dodge the Creeps!》

1. 项目概述:为什么选择Godot 4.2作为你的第一个游戏引擎? 如果你正在寻找一个免费、开源、功能强大且学习曲线相对平缓的游戏引擎来开启你的游戏开发之旅,那么Godot 4.2绝对是一个值得你投入时间的选择。我接触过不少引擎,从早期…

2026/7/24 16:02:42 阅读更多 →
HTML演示页和PPTX到底怎么选

HTML演示页和PPTX到底怎么选

用AI做PPT的人越来越多,一个挺常见的问题是:导出的HTML在线演示页和PPTX文件到底选哪个? HTML和PPTX的核心差异 HTML存在着优势之处,那便是在进行交互以及动态效果的制作方面比较便捷。可是它有一个问题是无法回避的&#xff1a…

2026/7/24 16:02:42 阅读更多 →
ToastFish完整指南:利用Windows通知栏高效背单词的终极方案

ToastFish完整指南:利用Windows通知栏高效背单词的终极方案

ToastFish完整指南:利用Windows通知栏高效背单词的终极方案 【免费下载链接】ToastFish 一个利用摸鱼时间背单词的软件。 项目地址: https://gitcode.com/GitHub_Trending/to/ToastFish ToastFish是一款创新的Windows桌面应用,它巧妙地将单词学习…

2026/7/24 16:01:41 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻