知识点回顾:
- 装饰器的思想:进一步复用
- 函数的装饰器写法
- 注意内部函数的返回值
作业:
编写一个装饰器 logger,在函数执行前后打印日志信息(如函数名、参数、返回值)
输入:
def logger(func):
def wrapper(*args, **kwargs):
# 新增参数打印
print(f"调用 {func.__name__} - 参数: {args}, 关键字参数: {kwargs}")
print(f"函数 {func.__name__} 开始执行")
result = func(*args, **kwargs)
# 新增返回值打印
print(f"函数 {func.__name__} 执行结束 - 返回值: {result}")
return result
return wrapper
@logger
def add(a, b):
return a + b
# 测试代码保持不变
add(2, 3)
输出:
PS C:\Users\13988\Desktop\python60-days-challenge-master> & D:/Other/Python/python.exe c:/Users/13988/Desktop/python60-days-challenge-master/test.py
调用 add - 参数: (2, 3), 关键字参数: {}
函数 add 开始执行
函数 add 执行结束 - 返回值: 5