装饰器 (Decorator) 就像是给法宝附魔。它可以在不改变原函数代码的情况下,增加额外的功能。
标志就是那个神奇的 @ 符号。
# 定义一个附魔卷轴 (装饰器)
def buff(func):
def wrapper():
print("✨ 圣光护体!(特效开启)")
func()
print("😎 帅气收招!(特效结束)")
return wrapper
# 给招式附魔
@buff
def attack():
print("⚔️ 斩击!")
# 调用招式
attack()
运行结果:
✨ 圣光护体!(特效开启)
⚔️ 斩击!
😎 帅气收招!(特效结束)
你可以给任何函数附魔:记录日志、计算时间、权限验证...
@login_required # 只有登录弟子才能查看
def view_secret_scroll():
print("查看禁地卷轴...")
任务:虽然不能在这里定义复杂的装饰器,但你可以试着模拟一下。
定义一个函数 say() 打印 "Hello",然后在调用它前后手动打印 "Start" 和 "End"。