装饰器的执行流程图

装饰器的执行流程图

装饰器可以理解为“函数加工厂”:把一个函数当作参数传递给外部函数,在内部函数中调用原函数,并在调用前后添加新功能。

一句话流程

  1. 把被装饰函数 f 交给装饰器函数 decorator
  2. decorator 返回一个新的函数 wrapper
  3. 以后调用 f() 的地方,实际上调用的是 wrapper()

最小可对照代码

def decorator(func):
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        return result
    return wrapper


@decorator
def f(x):
    return x + 1

关键点

关联:装饰器 / 函数 / 函数作为参数使用 / 闭包