首页 新闻 会员 周边

嵌套装饰器原理

0
[已关闭问题] 关闭于 2026-06-10 14:13

上面不是标准的装饰器,装饰器肯定返回装饰器函数,不行在定义装饰器去执行业务,装饰器在“形成(定义)”阶段,只负责返回一个增强版的函数对象,绝对不应该执行原函数的业务代码;真正的业务代码和增强逻辑,必须推迟到“调用”阶段才执行。

为什么顺序是这样的?(由内向外)
很多人容易搞混装饰器的执行顺序,你的代码很好地展示了这一点:
1. 先执行 @funcA (最靠近函数的):
相当于 f = funcA(f) 。此时 f 变成了被 A 包装过的版本。
2. 再执行 @funcB (外层的):
相当于 f = funcB(上一步的结果) 。此时 f 变成了被 B 包装过的版本。

所以,离函数定义越近的装饰器,越先被执行(越在里层)。

*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1802
提问于:2026-06-10 14:12
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册