3.闭包
# -*- coding: utf-8 -*-
#__author:jiangjing
#date:2018/1/29
def outer(arg):
def inner():
print(arg)
return inner
if __name__ == '__main__':
inner = outer(5)
inner()
执行步骤:
1.调用 outer 函数并且返回内部函数 inner,outer 函数调用完成
2.执行 inner 函数并输出结果:5
分析:
如果是普通函数,在执行第一步完成时,outer 函数作用域里面的局部变量会被释放,但是在执行 inner 函数时为什么还能够使用 arg 变量呢?这就是闭包的作用了,
当 outer 函数的返回值是内部函数的引用时,arg局部变量暂时不会释放。
闭包的用途:
1.装饰器,装饰器是什么?详见下一篇文章;
2.实现单例模式,什么是单例模式?详见下下篇文章。
posted on 2018-01-29 17:02 后端bug开发工程师 阅读(144) 评论(0) 编辑 收藏 举报