阅读142 返回首页    go Python


Python装饰器是精通Python的第一道关卡!看大牛是怎么理解它的!

手写装饰器

现在我们要写一个函数:

def add(x, y=10):return x + y

然后我们想看看运行的结果,于是写了几个 print 语句:

代码马上变得很复杂。但最重要的是,我们得写一堆代码(复制粘贴),程序员是懒惰的,所以我们就想到一些更简单的方法,与其写这么多次,我们可以只写一次代码:

作为一个懒惰的程序员,我们立马就发现了,有一个 “模式” 反复出现,即执行一个函数,并计算这个函数的执行时间。于是我们就可以把这个模式抽象出来,用函数:

带参数的装饰器

我们知道下面两种代码是等价的:

@decdef func(...):...func = dec(func)

我们可以把它当成是纯文本的替换,于是可以是这样的:

类作为装饰器

如果说 Python 里一切都是对象的话,那函数怎么表示成对象呢?其实只需要一个类实现__call__ 方法即可。

小结

装饰器中还有一些其它的话题,例如装饰器中元信息的丢失,如何在类及类的方法上使用装饰器等。但本文里我们主要目的是简单介绍装饰器的原因及一般的使用方法,能用上的地方就大胆地用上吧!

最后更新:2017-10-09 02:30:15

  上一篇:go 总结学习 Python的14 张思维导图汇总
  下一篇:go python学习-抓取本地网页元素