修饰器本质上是一个函数,它接收一个函数作为参数并返回一个修饰过的新函数,一般来说不会改变函数的功能,只是在外围增加一些辅助性的检查或小功能。
在《Python程序设计开发宝典》(董付国)中有下面这样一段用来演示修饰器用法的代码:
有读者朋友问:两个修饰器before和after,哪个先起作用,哪个后起作用呢?这段代码好像看不出来,其实对代码稍微修改一下即可得到答案。
修改一:
修改二:
修改三:
通过上面的验证可知,在使用修饰器的两种形式中,距离被修饰的函数近的修饰器先起作用。