当前位置: 首页 > news >正文

day27装饰器

装饰器的本质是一个高阶函数,它接收一个函数作为参数,并返回一个新函数来替代原函数。这个新函数需要:

  1. 保留原函数的调用方式(参数和返回值)。
  2. 在原函数执行前后添加额外逻辑(如计时、日志等)。

因此,我们需要在装饰器内部定义一个新函数来实现这些功能。

装饰器的执行流程为:

  1. 定义装饰器函数display_time:它接收一个函数func作为参数,并返回wrapper函数。
  2. 定义被装饰函数prime_nums:此时prime_nums是一个普通函数对象。
  3. 应用装饰器:Python 自动将prime_nums作为参数传递给display_time,即执行display_time(prime_nums)
  4. 替换原函数display_time返回wrapper函数,Python 用这个新函数覆盖了原来的prime_nums

也就是说装饰后,原函数名指向wrapper,而非原始函数。

当你调用prime_nums()时,实际上执行的是wrapper(),它会:

  1. 记录开始时间
  2. 调用func()(即原函数)
  3. 记录结束时间并打印耗时

这种等价的设计,会让初学者搞不懂为什么突然可以采取这种优雅的写法,类似的写法还有很多,在python中叫做语法糖:通过规范的写法来让代码更加优美和简洁,比如列表推导式也是,我们在后面再提。

你可以把@理解为语法糖操作,实际上并非是@装饰器,而是@装饰器+下一行的代码 二者是一个整体

@浙大疏锦行

http://www.cnnetsun.cn/news/163362.html

相关文章:

  • Langchain-Chatchat性能监控指标知识库
  • Langchain-Chatchat可用性管理知识问答系统
  • Gateway 对比 Kong(二)
  • 7、跨平台办公软件与文件处理全解析
  • Langchain-Chatchat IFRS9准则应用知识查询平台
  • 搜维尔科技:隆重推出DEX-EE灵巧手,市场上最坚固、最灵巧的机器人手
  • 9大高级RAG技术详解:提升大模型检索效果的实战指南
  • Langchain-Chatchat移动设备安全管理知识库
  • Langchain-Chatchat JWT令牌机制知识库构建
  • Langchain-Chatchat文件共享权限管理问答系统
  • Langchain-Chatchat IOC指标查询问答工具
  • Langchain-Chatchat渗透测试报告生成辅助工具
  • 50、多线程编程:任务控制与并行迭代
  • 51、多线程编程全解析
  • ML Workspace终极指南:5分钟搭建专业级机器学习环境
  • Langchain-Chatchat DevOps运维知识整合实践
  • Jetpack Compose响应式布局实战:构建自适应多屏Android应用
  • 端侧AI部署技术深度解析:从架构原理到行业实战
  • 30、构建安全、高效的企业级Web农场与数据仓库
  • Langchain-Chatchat数据安全法解读知识检索工具
  • React-Move 动画库终极指南:从入门到精通的完整实践手册
  • xPack OpenOCD 安装配置完全指南:快速搭建嵌入式调试环境
  • Langchain-Chatchat嵌入模型本地化部署要点
  • Proton-GE Wayland完全指南:解锁原生Linux游戏体验
  • Zed编辑器插件生态:完整指南与开发实战
  • CppMicroServices 终极指南:5步掌握C++模块化开发
  • SVG转Canvas渲染引擎终极指南:从零到精通的完整教程
  • Browser-Use Web-UI完全指南:让AI智能体在浏览器中自主工作的终极方案
  • Langchain-Chatchat科研辅助系统构建:论文资料智能问答平台
  • FastAPI蓝绿部署实战指南:实现零停机更新