闭包和装饰器

2019-10-13  本文已影响0人  仁安天下

闭包
外部函数返回一个不带参数的内部函数名称,需要注意的是如果内部函数要修改外部函数的不可修改的变量,需要添加一个nolocal标识

闭包能够有效的重读利用代码

1必须有一个内嵌函数

2内嵌函数必须引用外部函数中的变量

3外部函数的返回值必须是内嵌函数

函数运行后并不会被撤销,当函数运行完后,instance并不被销毁,而是继续留在内存空间里.这个功能类似类里的类变量,只不过迁移到了函数上.

装饰器
装饰器的作用和闭包类似,为增强某个函数而使用,下面是一个装饰器的例子:

def test(test):   

   def deto(fun):

     def wra(*arg,**kw):

     print(test)

     return fun(*arg,**kw)

    return deto

装饰器做了两件事:
1、将被装饰函数作为参数传入装饰器中;
2、返回一个闭包,这个闭包就是装饰器函数

上一篇 下一篇

猜你喜欢

热点阅读