Python 高级
装饰器基础
理解装饰器原理并编写简单装饰器
- 理解装饰器是高阶函数
- 编写计时和日志装饰器
- 使用 functools.wraps
装饰器是什么
装饰器是接收函数、返回新函数的函数,用 @ 语法应用。
示例代码(可运行)
Python 0%
ℹ️@语法糖
@decorator 等价于 func = decorator(func)。装饰器不修改原函数代码,却能增加功能——这就是「装饰」的含义。
计时装饰器
示例代码(可运行)
Python 0%
functools.wraps
示例代码(可运行)
Python 0%
预测输出
def d(f):
def w(): return f()*2
return w
@d
def x(): return 5
print(x())找 Bug装饰器函数没写return wrapper,被装饰的函数会变成None。
def d(f):
def w(): f()
@d
def hi(): print("hi")
hi()
填空题填写空白处的代码
@
def f(): pass
选择题
装饰器本质是?
资深工程师加餐
底层原理 · 大厂视角 · 工程经验,点卡片展开
@decorator 写在函数定义上方,它在「模块加载、函数被定义时」就执行一次,把原函数包装成新函数;之后每次调用,走的都是包装后的版本。带参数的装饰器本质是三层嵌套(外层收参数、中层收函数、内层收调用参数)。务必用 functools.wraps 保留原函数名和文档,否则调试栈和日志里全是 wrapper。
挑战任务
装饰器挑战
简单+50 XP
写一个装饰器,函数执行前打印时间戳。
装饰器挑战
Python 0%
2 个测试用例
课后作业
重试装饰器
中等+20 XP
实现失败自动重试3次的装饰器。
重试装饰器
Python 0%
1 个测试用例