一、闭包函数:

  在一个外函数中定义一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。

二、实例:

def outer(a): #外函数
b = 10 #临时变量
def inner(): #内函数
print(a+b)
return inner if __name__ == "__main__":
demo = outer(5) #调用外函数传入值
demo() #15
#内部函数调用外部函数变量,相当于执行inner函数
demo1 = outer(7)
demo1() #

三、闭包函数修改外函数局部变量:

nonlocal是python3中的语法

def outer(x):
def inner(y):
nonlocal x #nonlocal选取全局变量。
x += y
return x
return inner a = outer(10)
print(a(10))
print(a(600))

四、使用

  1、可以当成装饰器使用

  2、实现单利模式

引用:https://www.cnblogs.com/Lin-Yi/p/7305364.html

最新文章

  1. Unity3D安卓打包参数配置与兼容性的关系分析
  2. dedecms /member/edit_baseinfo.php SQL Injection Vul
  3. [翻译]Understanding Weak References(理解弱引用)
  4. Effective Java 61 Throw exceptions appropriate to the abstraction
  5. 我的Android最佳实践之—— 常用的Intent.Action(转)
  6. cf C. Dominoes
  7. MobileOA第一期总结
  8. node-xlsx
  9. 用wrk测试nginx/ndoejs/golang
  10. xterm配置
  11. jquery,html5,css3主要特性总结
  12. Linux:固定 ip
  13. rpm包安装的nginx热升级
  14. cocos2dx 3.x(打开网页webView)
  15. XML随笔:语法快速入门及当下流行的RSS简析
  16. java基础篇---异常处理
  17. Linux入门第五天——shell脚本入门(中)基础语法之判断与条件
  18. # 20155224 实验五 Java网络编程及安全
  19. 转 - 使用from __future__ import unicode_literals时要注意的问题
  20. mysq exists和in

热门文章

  1. AndroidStudio提高编译速度的几种方法
  2. 不要再认为Stream可读性不高了!
  3. 原来rollup这么简单之 rollup.watch篇
  4. Web_XML
  5. JAVA系列-JVM
  6. c# 使用Newtonsoft.Json解析JSON数组
  7. 我们是怎么实现Grpc CodeFirst
  8. 最通俗易懂的 HashMap 源码分析解读
  9. python之道15
  10. OpenCV-Python 理解特征 | 三十六