【发布时间】:2014-04-09 05:34:24
【问题描述】:
所以我读了这篇关于装饰器的page,但我仍然不明白什么时候装饰器有用。
考虑一段代码定义一个函数f,然后多次调用它。出于某种原因,我们希望f 做一些额外的工作。所以我们有两种方法:
- 定义一个新函数
g,它调用f,并完成所需的额外工作。然后在主代码中,将所有对f的调用替换为对g的调用 - 定义一个装饰器
g,并编辑代码在调用f之前添加@g
最后,它们都达到了相同的结果,并且 2) 相对于 1) 的优势对我来说并不明显。我错过了什么?
【问题讨论】:
-
您需要它们的那一天是您真正发现它的用处的时候。
-
装饰器只是语法糖。任何你想包装函数或给函数附加副作用的地方,装饰器都很有用。
-
你可以在这里找到很多好的反馈我认为:stackoverflow.com/a/489754/463678