博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰器
阅读量:6839 次
发布时间:2019-06-26

本文共 501 字,大约阅读时间需要 1 分钟。

装饰器就是闭包

使用装饰器需要在定义函数时@装饰器函数名。相当于执行func=wrapper(func)=inner

但是如果调用func.__name__ 查看的是Inner的函数名,同样查看函数文档也为inner的文档。

可以定义inner.__name__=func.__name__.

当然python内置的模块给出了wraps方法.

带参数的装饰器用两个闭包 @外部函数名加括号(参数)相当于执行这个函数,返回要用wrapper 意思还是@wrapper 但此时外部函数的参数已经传到inner里了

 

多个装饰器修饰一个函数的执行顺序及原理

 

比较直观的执行顺序,像是套娃从最外层执行,也就是最顶的wrapper2,但在原理上是先执行的wrapper1

 

原理是wrapper1将它下边离它最近的函数f传进,f=wrapper1(f)=inner1

而wrpapper2又将离它最近的inner1作为参数传进来 f=wrapper2(inner1)=inner2

所以f函数在调用时是套娃结构的顺序。

 

转载于:https://www.cnblogs.com/daju/p/10037028.html

你可能感兴趣的文章