个人网站icp网站开发使用的软件
2026/4/18 7:17:11 网站建设 项目流程
个人网站icp,网站开发使用的软件,手机上自己设计房子软件,采购管理系统免费版浙大疏锦行 作业#xff1a;编写一个装饰器logger#xff0c;在函数执行前后打印日志信息 # 导入必要模块#xff0c;functools.wraps用于保留被装饰函数的元信息 import functools from datetime import datetimedef logger(func):日志装饰器#xff…浙大疏锦行作业编写一个装饰器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

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

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

立即咨询