news 2026/4/15 10:48:55

day27装饰器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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中叫做语法糖:通过规范的写法来让代码更加优美和简洁,比如列表推导式也是,我们在后面再提。

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

@浙大疏锦行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 19:28:16

K8s 部署所需的配置文件

检查当前配置,并准备 K8s 部署所需的配置文件(不修改源代码)。 [4 tools called] 当前使用 hash 路由(createWebHashHistory()),在 K8s 中通常无需修改路由。创建 K8s 部署配置文件(Dockerfile、…

作者头像 李华
网站建设 2026/4/15 10:47:09

Langchain-Chatchat证券交易规则知识查询平台

Langchain-Chatchat证券交易规则知识查询平台 在证券公司合规部门的日常工作中,一个交易员突然发来消息:“客户风险等级为C3,能买科创板股票吗?”你立刻翻出《投资者适当性管理办法》PDF文档,拖动进度条查找“C3”和“…

作者头像 李华
网站建设 2026/4/15 10:47:24

Langchain-Chatchat OKR目标管理知识库

Langchain-Chatchat:构建企业级本地化OKR目标管理知识库 在数字化转型的浪潮中,越来越多企业开始采用OKR(目标与关键结果)体系来对齐战略方向、激发组织活力。然而,随之而来的挑战是:制度文档分散、新员工上…

作者头像 李华
网站建设 2026/4/15 10:48:38

Langchain-Chatchat release管理知识平台

Langchain-Chatchat:构建企业级私有知识问答平台的技术实践 在企业数字化转型不断深化的今天,如何高效管理和利用海量非结构化文档——如制度文件、技术手册、合同协议和项目报告——已成为组织提升运营效率的关键挑战。传统的关键词搜索方式面对语义复杂…

作者头像 李华
网站建设 2026/4/14 23:00:14

孩子近视怎么办?家长别慌!看完这个就明白如何应对

如今,儿童青少年近视率居高不下,“小眼镜”越来越多,让不少家长忧心忡忡。在儿童青少年近视防控领域,诸多理论上完善的建议,在实际生活中却遭遇落地难题。一方面,户外活动防控法虽简单有效,但当…

作者头像 李华