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

python中的装饰器(1)

单一职责原则

单一职责原则(Single Responsibility Principle, SRP)是面向对象编程中的一个核心原则,它指的是一个类或一个函数应该有且只有一个改变的理由。也就是说,一个函数或类应该只做一件事,并且做好这件事。如果一个函数尝试做太多的事情,它就会变得难以理解和维护。

def my_function():total = 0n = 100000start_time = time.time()for i in range(1, n):total += i end_time = time.time()print(f"从1加到{n}的和:{total}, 执行耗时: {end_time - start_time:.4f} 秒")

my_function()中,包含两项任务,既计算1到n的和又打印函数执行时间,显然违反了函数的单一职责原则。
将函数my_function()按任务进行修改

# 计时函数
def time_spend(base_func):def enhance_fn():start_time = time.time()base_func()end_time = time.time()print(f"执行耗时: {end_time - start_time:.4f} 秒")return enhance_fn
#计算函数
def my_function():total = 0n = 100000for i in range(1, n):total += iprint(f"从1加到{n}的和:{total}")#执行
my_function = time_spend(my_function)
my_function()

这里的time_spend()就是装饰器,是 Python 里一个非常重要且实用的高级特性,在不修改计算函数的前提下,为其添加计时功能。
这里的my_function = time_spend(my_function)还可以用@time_spend代替。

# 计时函数
def time_spend(base_func):def enhance_fn():start_time = time.time()base_func()end_time = time.time()print(f"执行耗时: {end_time - start_time:.4f} 秒")return enhance_fn
#计算函数
def my_function():total = 0n = 100000for i in range(1, n):total += iprint(f"从1加到{n}的和:{total}")#执行
@time_spend
my_function()

这就是一个简单的装饰器示例。

http://www.jsqmd.com/news/405470/

相关文章:

  • python基于flask的高校机房设备管理系统vue
  • python基于flask的社区居家日常报修维修平台vue
  • python基于flask的医疗药店连锁药店管理系统vue
  • python基于flask的幼儿园托幼机构管理系统文件vue
  • python基于flask的汽车4s店销售预约试驾vue
  • 探索经典平面手性:基于COMSOL的光学仿真之旅
  • 靠昆虫复眼思路做感知,多小镜头拼接视野,颠覆单镜头,输出全景感知。
  • [LangGrpah] Tool calls demo
  • 凸优化数学基础笔记(八):一维线性搜索法(一)
  • 工业园区的AGV调度是个头疼的问题——既要赶在客户方便的时间送货,又要控制物流成本。最近用MATLAB折腾了个遗传算法方案,实测效果不错,给大家看看实现思路
  • [AI提效-25]-与AI大模型交互:一场接纳人类社会多样性的修行
  • python基于flask的创梦宝大学生创业众筹捐赠平台vue
  • python基于flask的工程公司企业门户网站vue
  • python基于flask的交通违章处理系统的设计与实现vue
  • 99元/年!腾讯云部署OpenClaw,手把手教你打造7×24小时AI私人助手-插件扩展篇
  • 奥特曼:人类吃 20 年饭不如训练 AI,全网炸了,
  • 看完就会:10个降AIGC平台测评,继续教育降AI率全攻略
  • AI提示词管理工具AiShort
  • 主题测试 - -于勤
  • 2.23
  • 基于深度学习电梯扶梯危险行为检测系统的设计与实现
  • Atcoder ARC215 解题报告
  • AI元人文:空性、科学与舞台——基于“自感注册”的存在论拓展
  • 萨瓦瑞亚集团携手马托特和瀚德凯尔荣获艾利斯奖 - TIMWORKROOM
  • 2026国内这十家正规植发机构,排名情况速看,发际线调整/不剃发植发/微针植发/植发/5C美学种植,植发医院排名前十 - 品牌推荐师
  • 效率直接起飞!千笔,专科生降AI率首选
  • 传统计算机解决量子模拟难题
  • CW32L011无感无刷驱动器代码详解
  • 基于 TypeScript 的实践:外汇与贵金属 API 统一调用方案
  • 2026年开年GitHub月度Trending技术风向标:TypeScript成最大赢家,AI Agent全面爆发