news 2026/2/13 2:26:04

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/2/10 2:58:24

Langchain-Chatchat虚拟资产保护知识问答系统

Langchain-Chatchat:构建安全可控的智能知识问答系统 在企业数字化进程不断加速的今天,技术文档、操作手册、合规政策等非结构化文本正以前所未有的速度积累。这些“沉睡”的知识资产本应是组织智慧的核心载体,但现实中却常常因检索困难、语义…

作者头像 李华
网站建设 2026/2/3 19:32:54

孩子近视了,家长怎么办?该如何正确防控近视?

孩子查出近视的那一刻,相信很多家长心里都又着急又迷茫,不知道该从哪里入手去干预。其实近视防控不是单一的动作,而是需要从日常用眼、辅助工具、生活习惯等多个维度一起发力,选对方法才能有效延缓近视度数增长。一、先做专业检查…

作者头像 李华
网站建设 2026/2/4 10:13:05

Langchain-Chatchat OLA运营级别协议知识库

Langchain-Chatchat OLA运营级别协议知识库 在企业IT服务管理中,OLA(运营级别协议)作为支撑SLA(服务级别协议)落地的关键环节,往往包含大量跨部门协作流程、响应时限和技术规范。然而,这些文档通…

作者头像 李华
网站建设 2026/2/10 8:36:30

flink处理函数之KeyedProcessFunction

本文重点 在前面的课程中我们学习了最基本的ProcessFunction,本文我们学习最重要的KeyedProcessFunction。 KeyedProcessFunction 基于keyBy之后的KeyedStream,直接调用.process()方法,这时需要传入的参数就是 KeyedProcessFunction的实现类。 KeyedProcessFunction是继…

作者头像 李华
网站建设 2026/2/8 5:25:21

python 第四次作业

位运算: 计算56及-18的所有位运算符结果,并使在注释中体现计算过程代码"""a 56原码:0011 1000b -18原码:0001 0010反码:1110 1101补码:1110 1110bin a:0011 1000b:1110 1110a & b:001…

作者头像 李华
网站建设 2026/2/8 14:42:06

20、Samba 相关手册页介绍

Samba 相关手册页介绍 在使用 Samba 进行 Linux 和 Windows 集成时,有一些手册页会非常有用。下面将重点介绍 lmhosts 手册页的相关内容。 一、 lmhosts 概述 lmhosts 是 Samba 的 NetBIOS 名称到 IP 地址的映射文件,它属于 Samba 套件的一部分。其格式与 /etc/host…

作者头像 李华