Pyhton训练营打卡Day27

知识点回顾:

  1. 装饰器的思想:进一步复用
  2. 函数的装饰器写法
  3. 注意内部函数的返回值

作业:

编写一个装饰器 logger,在函数执行前后打印日志信息(如函数名、参数、返回值)

python 复制代码
def logger(func):
    def wrapper(*args, **kwargs):
        # 执行前打印日志
        print(f"[日志] 开始执行函数: {func.__name__}")
        print(f"[日志] 参数: args={args}, kwargs={kwargs}")
        
        # 执行原函数并获取返回值
        result = func(*args, **kwargs)
        
        # 执行后打印日志
        print(f"[日志] 函数 {func.__name__} 执行完毕")
        print(f"[日志] 返回值: {result}")
        
        return result  # 返回原函数的返回值
    return wrapper

# 示例使用
@logger
def add(a, b):
    return a + b

# 测试
add(3, 5)    

日志\] 开始执行函数: add \[日志\] 参数: args=(3, 5), kwargs={} \[日志\] 函数 add 执行完毕 \[日志\] 返回值: 8

今天任务重加之今天自己有事情,下次补上这次学习内容。

@浙大疏锦行

相关推荐
sss191s3 分钟前
Java 集合面试题 PDF 及常见考点解析与备考指南
java·开发语言·pdf
七七&5563 分钟前
java面试-场景题
java·python·面试
老刘忙Giser4 分钟前
c# List<string>.Add(s) 报错:UnsupportedOperationException
开发语言·c#
loser.loser9 分钟前
QQ邮箱发送验证码(Springboot)
java·spring boot·mybatis
itwlz12 分钟前
vite配置@别名,以及如何让IDE智能提示路经
开发语言·前端·javascript
lichenyang45314 分钟前
添加按钮跳转页面并且根据网站的用户状态判断是否显示按钮
开发语言·前端·javascript
誰能久伴不乏19 分钟前
Qt 开发中的父类与父对象的区别和父对象传递:如何选择 `QWidget` 或 `QObject`?
java·开发语言·qt
弱冠少年19 分钟前
golang入门
开发语言·后端·golang
Humbunklung22 分钟前
Rust 函数
开发语言·后端·rust
waterHBO24 分钟前
python 爬虫工具 mitmproxy, 几问几答,记录一下
开发语言·爬虫·python