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

Day31 函数专题2

@浙大疏锦行

作业:编写一个装饰器logger,在函数执行前后打印日志信息

# 导入必要模块,functools.wraps用于保留被装饰函数的元信息 import functools from datetime import datetime def logger(func): """ 日志装饰器:在函数执行前后打印相关日志信息 :param func: 被装饰的函数 :return: 包装后的函数 """ # 使用functools.wraps装饰内层函数,保留原函数的__name__、__doc__等元信息 @functools.wraps(func) def wrapper(*args, **kwargs): """内层包装函数,实现日志打印逻辑""" # 1. 函数执行前:打印前置日志 func_name = func.__name__ # 获取原函数名 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 获取当前格式化时间 print(f"[{current_time}] 开始执行函数:{func_name}()") print(f"[{current_time}] 函数{func_name}的位置参数:{args}") print(f"[{current_time}] 函数{func_name}的关键字参数:{kwargs}") # 2. 执行原函数,保存返回值(兼容有返回值的函数) try: result = func(*args, **kwargs) except Exception as e: # 捕获函数执行异常并打印 print(f"[{current_time}] 函数{func_name}执行失败,异常信息:{str(e)}") raise # 重新抛出异常,不影响原函数的异常传播 else: # 3. 函数执行成功后:打印后置日志 print(f"[{current_time}] 函数{func_name}执行完成,返回结果:{result}") return result # 返回原函数的执行结果 return wrapper
http://www.jsqmd.com/news/222886/

相关文章:

  • 微服务架构选型指南:中小型软件公司的理性思考
  • 腾讯混元4B-GPTQ:4bit轻量化AI推理新标杆
  • GLM-4.5V终极体验:解锁42项视觉任务新能力
  • OIDC vs OAuth2:企业级身份认证的深度思考与实践
  • 开源大模型落地入门必看:Qwen2.5-7B多场景应用部署教程
  • CoDA:1.7B参数双向代码生成新方案!
  • Qwen2.5-7B应用教程:多语言旅游助手开发指南
  • Qwen2.5-7B部署报错频发?镜像免配置方案解决依赖冲突问题
  • 组合逻辑电路设计新手教程:从真值表到逻辑表达式
  • Qwen2.5-7B模型压缩:轻量化部署解决方案
  • ASP Session
  • DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
  • Qwen2.5-7B故障预测:技术问题预防性分析
  • Qwen2.5-7B硬件选型:不同GPU配置性能对比测试
  • Qwen2.5-7B故障诊断:系统问题排查指南
  • Qwen2.5-7B智能邮件分类:优先级与自动路由
  • Servlet 编写过滤器
  • Qwen2.5-7B多语言支持:29种语言处理实战案例
  • Qwen2.5-7B vs Google-Gemma对比:Apache许可优势分析
  • Magistral 1.2:24B多模态模型本地部署新体验
  • 图解说明蜂鸣器驱动电路中LC滤波对噪声的影响
  • Magistral 1.2:24B多模态AI本地部署完全指南
  • Qwen2.5-7B响应慢?注意力头数调优部署实战解决方案
  • Qwen2.5-7B部署教程:从零开始配置Python调用接口详细步骤
  • Qwen2.5-7B快速上手:三步完成网页服务调用实战教程
  • Qwen2.5-7B架构解析:Transformer改进与性能优势
  • GLM-4.5V-FP8开源:轻松掌握多模态视觉推理
  • Qwen2.5-7B vs Gemini-Pro长文本处理对比评测教程
  • 华为HCIA-AI Solution H13-313题库(带详细解析)
  • 揭秘AHN黑科技:Qwen2.5轻松驾驭超长文本