闭包
外部函数返回一个不带参数的内部函数名称,需要注意的是如果内部函数要修改外部函数的不可修改的变量,需要添加一个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、返回一个闭包,这个闭包就是装饰器函数
网友评论