Python decorator

话说昨天面试python开发的时候,做了一个笔试题。

本来以为自己还算有python开发经验的,但是一真正测试才发现自己还是很弱啊。有一个是实现一个decorator,虽然平时用到装饰器的情况很多,却真的还没自己实现过,于是就跪在这个题上了。回来之后一顿恶补,总结了一下。

首先就是 @wrapper := func = wrapper(func)。意思就是装饰器实际上是修改并重载一个函数,它是以一个函数做为参数并且返回一个函数。

然后

def wrapper(func): <br>
    def inner(*args, **kwargs):
        print "do extra work"
        return func(*args, **kwargs)
    return inner

这个wrapper函数返回了一个函数,这个函数接受与func一样的参数,做了一些其他的事之后就可以返回原来的func了。

这里面还涉及到一个闭包closure的概念,每次wrapper接受不同的函数,inner都会保存这个函数并返回一个新的函数,也就是这个函数参数在wrapper结束后也没有销毁,它的生命周期在wrapper之外。

参考资料:十二步理解decorator

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 1,631评论 0 6
  • Python进阶框架 希望大家喜欢,点赞哦首先感谢廖雪峰老师对于该课程的讲解 一、函数式编程 1.1 函数式编程简...
    Gaolex阅读 5,590评论 6 53
  • 前言 最近学习Python,在看一个框架源码过程中对装饰器很困惑,Google了一圈,在stack overflo...
    dev_xdyang阅读 6,382评论 4 17
  • 你记得你做过最勇敢的事是什么吗?我仔细回忆了一下,我没有做过任何一件算的上勇敢的事。 有人勇斗悍匪,有...
    易缺阅读 419评论 0 0