吉吉于

装饰器执行流程

前段时间有个同事自学Python,问我装饰器执行流程,于是总结下来。

decorator

  1. addfunc加了两个装饰器函数执行完成之后,会输出

enter into deco_2

enter into deco_1

此时addfunc已经被包装成了addfunc = deco_1(deco_2(addfunc))

  1. 执行addfunc(3, 4)

首先执行deco_1,此时deco_1中的参数func为deco_2(addfunc),进入wrapper,输出enter into deco_1_wrapper

然后执行wrapper中的func,即deco_2(addfunc),进入了deco_2中的wrapper,输出enter into deco_2_wrapper

此时的func为addfunc本身,执行func(a,b),输出了result is 7,接着输出了over deco_2,over deco_1