一文读懂Python装饰器

嵌入式技术

1330人已加入

描述

谈装饰器前,还要先要明白一件事,Python 中的函数和 Java、C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个函数,例如:

p

p

先来看一个简单例子,虽然实际代码可能比这复杂很多:

p

现在有一个新的需求,希望可以记录下函数的执行日志,于是在代码中添加日志代码:

p

p

p

p

简单装饰器

p

p

@ 语法糖

p

p

p

*args、**kwargs

可能有人问,如果我的业务逻辑函数 foo 需要参数怎么办?比如:

p

我们可以在定义 wrapper 函数的时候指定参数:

p

p

p

p

p

比如:

p

这时,你就可以把 wrapper 函数指定关键字函数:

p

带参数的装饰器

p

p

p

@use_logging(level=“warn”)等价于@decorator

类装饰器

p

p

functools.wraps

p

例子:

p

p

p

装饰器顺序

一个函数还可以同时定义多个装饰器,比如:

p

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐
  • p

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分