Python 闭包 与 装饰器

运行结果如下:


闭包的定义:在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包

1.闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成

2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存



装饰器的定义:装饰器,功能就是在运行原来功能基础上,加上一些其它功能,比如权限的验证,比如日志的记录等等。不修改原来的代码,进行功能的扩展。

比如java中的动态代理,python的注解装饰器

其实python的装饰器,是修改了代码


例子一:

@w1 内部会执行以下操作

执行w1函数 ,并将 @w1 下面的函数名作为w1函数的参数,即:@w1 等价于 w1(f1) 所以,内部就会去执行。   

w1的返回值;将执行完的w1函数返回值 赋值 给@w1下面的函数的函数名f1 即 将w1的返回值再重新赋值给 f1  ,即  f1()=inner()


先将f1赋值给参数,inner赋值给f1,这样f1( )调用的就是inner( ),inner的返回值就是func,func( )调用的就是外部的这个函数。

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

推荐阅读更多精彩内容

  • 1.1==,is的使用 ·is是比较两个引用是否指向了同一个对象(引用比较)。 ·==是比较两个对象是否相等。 1...
    TENG书阅读 761评论 0 0
  • 本文为《爬着学Python》系列第四篇文章。从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新。 在Pytho...
    SyPy阅读 2,534评论 4 11
  • 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂...
    TypingQuietly阅读 19,665评论 26 186
  • 在学习 Python 的时候,庆幸自己有 JavaScript 的基础,在学习过程中,发现许多相似的地方,如导包的...
    柏丘君阅读 1,226评论 2 8
  • Python的装饰器的英文名叫Decorator,要对一个已有的模块做一些“修饰工作”,所谓修饰工作就是想给现有的...
    Spareribs阅读 688评论 1 11