做网站单页网站被盗用
2026/5/21 11:21:16 网站建设 项目流程
做网站单页,网站被盗用,网络维护招聘,学做粤菜的网站有哪些https://blog.csdn.net/weixin_45655710?typeblog浙大疏锦行 DAY 27 函数专题2:装饰器 ps: 第一期day27对应5月16日 知识点回顾#xff1a; 1.装饰器的思想#xff1a;进一步复用 2.函数的装饰器写法 3.注意内部函数的返回值 作业#xff1a; 编写一个装饰器logger#x…https://blog.csdn.net/weixin_45655710?typeblog浙大疏锦行DAY 27 函数专题2:装饰器ps: 第一期day27对应5月16日知识点回顾1.装饰器的思想进一步复用2.函数的装饰器写法3.注意内部函数的返回值作业编写一个装饰器logger在函数执行前后打印日志信息如函数名、参数、返回值1 logger2 def multiply(a, b):3 return a * b45 multiply(2, 3)6 #输出7 # 开始执行函数 multiply,参数(2, 3) , { }8 #函数multiply执行完毕返回值:6DAY 27函数专题2——装饰器Decorators的学习。装饰器是 Python 中一种非常高级且优雅的语法。它的核心思想是**“在不修改原函数代码的前提下为函数添加额外的功能”**。这在机器学习项目中非常实用比如你可以在不改变模型训练函数的情况下通过装饰器自动记录训练时间、保存日志或检查显存。 核心知识点回顾装饰器的本质装饰器本质上是一个闭包函数它接收一个函数作为参数并返回一个替换后的函数。闭包结构外部函数定义规则内部函数通常叫wrapper负责具体执行。***args和**kwargs**为了让装饰器通用内部函数必须能接收任何形式的参数。返回值传递内部函数必须获取原函数的执行结果并return否则原函数的返回值会“丢失”。 作业编写logger装饰器根据你的要求我们需要在函数执行前获取函数名和参数在执行后获取返回值。代码实现importfunctoolsdeflogger(func): 日志装饰器记录函数的调用过程 # 使用 functools.wraps 是一个良好的习惯# 它能保留原函数的元数据如函数名、文档字符串functools.wraps(func)defwrapper(*args,**kwargs):# 1. 函数执行前的操作# func.__name__ 获取函数名print(f开始执行函数{func.__name__}, 参数{args},{kwargs})# 2. 执行原函数resultfunc(*args,**kwargs)# 3. 函数执行后的操作print(f函数{func.__name__}执行完毕返回值:{result})# 4. 返回原函数的执行结果returnresultreturnwrapper# --- 测试代码 ---loggerdefmultiply(a,b):returna*b# 调用函数multiply(2,3)✍️ 作业梳理与深度解析为了帮你彻底掌握这个逻辑我们拆解一下代码的执行细节1. 为什么使用*args和**kwargs如果你的multiply以后改成了接收三个参数或者你把装饰器用在了一个只有关键字参数的函数上*args元组和**kwargs字典能保证装饰器依然有效这就是“通用性”。2. 返回值的重要性在wrapper内部我们用result func(*args, **kwargs)拿到了2 * 3 6。如果最后没有return result那么当你运行val multiply(2, 3)时val会变成None。3. 机器学习中的实际应用想象一下如果你在做加州房价预测的流程你可以写一个timer装饰器importtimedeftimer(func):defwrapper(*args,**kwargs):starttime.time()resfunc(*args,**kwargs)print(f耗时:{time.time()-start:.4f}s)returnresreturnwrappertimerdeftrain_random_forest(X,y):# 这里放你之前的随机森林训练代码pass这样你就能在不污染训练代码逻辑的情况下监控每一轮训练的时长了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询