Python 闭包 与 装饰器

2017-07-15  本文已影响0人  魔法高校的劣等生

运行结果如下:

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

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( )调用的就是外部的这个函数。

上一篇下一篇

猜你喜欢

热点阅读