Python很早就引入了装饰器——在PEP-318中,作为一种简化函数和方法定义方式的机制,这些函数和方法在初始定义之后必须进行修改。

这样做的最初动机之一是,使用classmethod和staticmethod等函数来转换方法的原始定义,但是它们需要额外的一行代码来修改函数的初始定义。

一般来说,每次必须对函数应用转换时,我们必须使用modifier函数调用它,然后将它重新分配到函数初始定义时的名称中。

例如,假设有一个叫作original的函数,在它上面有一个改变original行为的函数(叫作modifier),那么我们必须这样写:

def original(...):
    ...
original = modifier(original)

(相关免费学习

Python中的装饰器是什么?装饰器是如何工作的?