闭包: 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。

一般情况下,在我们认知当中,如果一个函数结束,函数的内部所有东西都会释放掉,还给内存,局部变量都会消失。但是闭包是一种特殊情况,如果外函数在结束的时候发现有自己的临时变量将来会在内部函数中用到,就把这个临时变量绑定给了内部函数,然后自己再结束。

1 #闭包函数的实例

2 # outer是外部函数 a和b都是外函数的临时变量

3 def outer( a ):

4 b = 10

5 # inner是内函数

6 def inner():

7 #在内函数中 用到了外函数的临时变量

8 print(a+b)

9 # 外函数的返回值是内函数的引用

10 return inner

11

12 if __name__ == '__main__':

13 # 在这里我们调用外函数传入参数5

14 #此时外函数两个临时变量 a是5 b是10 ,并创建了内函数,然后把内函数的引用返回存给了demo

15 # 外函数结束的时候发现内部函数将会用到自己的临时变量,这两个临时变量就不会释放,会绑定给这个内部函数

16 demo = outer(5)

17 # 我们调用内部函数,看一看内部函数是不是能使用外部函数的临时变量

18 # demo存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数

19 demo() # 15

20

21 demo2 = outer(7)

22 demo2()#17

python闭合函数_Python中函数的闭包相关推荐

  1. python中模块和函数_Python中函数和模块的体验与使用

    函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个 ...

  2. python中的参数函数_python中函数与参数的简介

    函数 函数就是具有某个具体功能的工具 而使用用函数能提供开发效率,减少代码冗余,提高程序的扩展性. 在Python中,函数有五大要点:分别是def.函数名.函数体.参数.返回值,以及两个英文版符号,分 ...

  3. python中span函数_Python中函数定义及参数实例

    1.函数定义函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字 ,可以通过函数名在程序的不同地方多次执行(这通常叫函数调用) 预定义函数(可以直接使用) 自定义函数(自 ...

  4. python收集参数_Python 中函数的 收集参数 机制

    定义函数的时候,在参数前加了一个 * 号,函数可以接收零个或多个值作为参数.返回结果是一个元组. 传递零个参数时函数并不报错,而是返回一个空元组.但以上这种方法也有局限性,它不能收集关键字参数. 对关 ...

  5. python如何使用函数_python中函数使用

    1.关于函数的调用,简单小例子: >>> def fun(): print(test) >>> test='ni hao ma ?' >>> fu ...

  6. python求均方根_python中函数的均方根

    I want to calculate root mean square of a function in Python. My function is in a simple form like y ...

  7. python中msg函数_Python 知识点考点之闭包

    1.预备知识--作用域(global vs local) 作用域是程序运行时变量可被访问的范围,定义在函数内的变量是局部变量. global: num = 10 # 全局作用域变量 def foo() ...

  8. python中msg函数_Python 中闭包函数和装饰器

    一.闭包函数的概述 闭包 closure, 是一种代码的组织结构.当一个内嵌函数引用其外部作用域的变量,就形成一个闭包函数.闭包函数有一个内嵌函数,内嵌函数引用外部函数中的变量,外部函数的返回值是内嵌 ...

  9. python中factor函数_Python入门-函数

    函数 在维基百科上函数式这样描述的: 函数在数学中为两集合间的一种对应关系:输入值集合中的每项元素皆能对应唯一一项输出值集合中的元素. 此处的函数区别于我们数学上的函数,在编程世界中,函数(Funct ...

最新文章

  1. python 矩阵常用计算
  2. lucene正向索引(续)——域(Field)的元数据信息在.fnm里,在倒排表里,利用跳跃表,有利于大大提高搜索速度。...
  3. ajax提交数据服务端返回报错
  4. Linux 防火墙的基本认识
  5. 用JS轻松实现一个录音、录像、录屏工具库
  6. 六、 跨多个WebService管理Session
  7. ab压力测试_Apache ab压力测试的知识点
  8. 面试题:谈谈你对TCP的认识
  9. HTML+CSS+JS实现 ❤️H5图片列表滑动特效❤️
  10. kubernetes创建yaml,pod服务一直处于 ContainerCreating状态的原因查找与解决
  11. 开发Adobe AIR的原生扩展
  12. 京东与滁州达成战略合作,共建全国首座智慧型家电产地仓
  13. java jsp输出乱码,这是小弟我的JSP文件,输出后,汉字显示为乱码,怎么解决
  14. Android解压boot.img
  15. 腾讯微博开放平台API SDK vb版源码发布
  16. matlab折线参数,matlab画含参数曲线族
  17. 工业大数据:中国智造下的“数字新基建”
  18. 树莓派 PHP白屏,树莓派系统安装及3.5寸显示屏白屏解决办法
  19. 怎么把PDF页面删除?教你两种方法
  20. ArcMap关联图层并发布为服务

热门文章

  1. c++图的创建_「PS抠图系列13」通道混合器
  2. RecycleView的LayoutManager
  3. Springboot+idea的一个bug(Unregistering JMX-exposed beans on shutdown)
  4. tomcat虚拟盘符映射
  5. OpenShift 4 - DevSecOps (2) - 修复 RHACS 发现的安全隐患
  6. OpenShift 4 MTC - 从 OpenShift 3 向 OpenShift 4 迁移应用
  7. 连接Android与ASP.NET Core Web API的完整教程
  8. Ubuntu 放弃支持 32 位应用程序实属乌龙
  9. python difflib详解_在 Python 中使用 difflib 比较字符串
  10. python自己写包_如何将自己的Python包发布到PyPI