内嵌函数/内部函数

  >>> def fun1():
  ... print('fun1()正在调用')
  ... def fun2():
  ... print('fun2()正在被调用')
  ... fun2()
  ...
  >>> fun1()
  fun1()正在调用
  fun2()正在被调用

内部函数作用域在外部函数之内

  >>> fun2()
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  NameError: name 'fun2' is not defined

闭包 closure

 闭包函数式编程的一种重要语法结构

 函数式编程是一种编程范式,对代码进行抽象提炼和概括,使代码重用性变高

 python闭包在表现形式表现为 如果在一个内部函数里对外部作用域(但不是全局作用域)的变量进行引用,内部函数就被认为是闭包

  >>> def FunX(x):
  ... def FunY(y):
  ... return x * y
  ... return FunY
  ...
  >>> i = FunX(8)
  >>> i
  <function FunX.<locals>.FunY at 0x7f5f41b05b70>
  >>> type(i)
  <class 'function'>
  >>> i(5)
  40
  >>> FunX(8)(5)
  40
  >>> FunY(5)
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  NameError: name 'FunY' is not defined

  >>> def Fun1():
  ... x=5
  ... def Fun2():
  ... x *= x
  ... return x
  ... return Fun2()
  ...
  >>> Fun1()
  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 6, in Fun1
  File "<stdin>", line 4, in Fun2
  UnboundLocalError: local variable 'x' referenced before assignment

 列表没有存放在栈里

  >>> def Fun1():
  ... x = [5]
  ... def Fun2():
  ... x[0] *= x[0]
  ... return x[0]
  ... return Fun2()
  ...
  >>> Fun1()
  25

nonlocal 关键字

  >>> def Fun1():
  ... x=5
  ... def Fun2():
  ... nonlocal x
  ... x *= x
  ... return x
  ... return Fun2()
  ...
  >>> Fun1()
  25

转载于:https://www.cnblogs.com/fengjunjie-w/p/7491109.html

Python--12 内嵌函数和闭包相关推荐

  1. python中闭包函数_Python的闭包问题(关于内嵌函数引用闭包函数的变量问题)

    一.闭包: 记得:闭包的特性就是:内嵌函数会保存它引用的外围函数的变量值. 闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数和被引用的变量等 ...

  2. 原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念

    原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念. 我是从这里看来的: http://blog.dreambrook.com/soloist/archive/2005/03/13/526.a ...

  3. 零基础入门学习Python(19)-内嵌函数和闭包

    global关键字 全局变量的作用域是整个模块,也就是代码段内所有的函数内部都可以访问到全局变量 注意,在函数内部仅仅去访问全局变量就好,不要试图去修改它,如果随意修改全局变量的值,很容易牵一发而动全 ...

  4. 小甲鱼python第二十讲(内嵌函数和闭包)

    内嵌函数 def fun1():print("fun1正在被调用...")def fun2():print("fun2正在被调用..")fun2()#在fun1 ...

  5. 课时20:内嵌函数和闭包

    目录: 一.global关键字 二.内嵌函数 三.闭包 四.课时20课后习题及答案 ******************** 一.global关键字 ******************** 全局变量 ...

  6. python内嵌函数和闭包与java 匿名内部类_Lambda表达式与匿名内部类的联系和区别...

    Java Lambda 表达式的一个重要用法是简化某些匿名内部类的写法,因此它可以部分取代匿名内部类的作用. Lambda 表达式与匿名内部类的相同点如下: Lambda 表达式与匿名内部类一样,都可 ...

  7. python内嵌函数和闭包与java 匿名内部类_Java匿名内部类构造原理分析

    很明显,我们的匿名内部类有了名字 InnerTest$1,而且是继承自 Test class InnerTest$1 extends Test 这个类中有一个成员final InnerTest thi ...

  8. 8.局部变量/全局变量global/内嵌函数/闭包nonlocal

    函数:有返回值 过程:无返回值 注解:在python中,只有函数(每个函数都有返回值),没有过程>>> def hello():print("first")> ...

  9. python内置函数与闭包_Python进阶(五)----内置函数Ⅱ 和 闭包

    Python进阶(五)----内置函数Ⅱ 和 闭包 一丶内置函数Ⅱ ####内置函数#### 特别重要,反复练习 ###print() 打印输入 #sep 设定分隔符 # end 默认是换行可以打印到 ...

最新文章

  1. ONNX MLIR方法
  2. 漫画:别人的35岁!
  3. eclipse不支持泛型_C++ 泛型编程(一)
  4. php封装的数据库操作文件夹,PHP中对数据库操作的封装_php
  5. Google AJAX 搜索 API
  6. Freescale i.mx28 Boot-stream分析
  7. ehlib的DBGridEh控件中使用过滤功能的方法
  8. C++案例试炼:机房预约系统【附完整代码】
  9. Swift 获取字符的个数 、字符串的遍历
  10. python飞机大战项目概述需求_飞机大战需求分析报告.doc
  11. 【深入理解RabbitMQ原理】RabbitMQ 相关问题总结--RabbitMQ 如何确保消息发送和消费?
  12. 申请德国农工大学计算机案例,德州农工大学世界排名怎么样?
  13. linux安装wine
  14. python floor函数_Python floor() 函数 - Python 教程 - 自强学堂
  15. Qt 笔锋 钢笔 压力值
  16. 【大数据存储】Java操作jena练习
  17. 每日一读---补充正能量
  18. linux ps-l命令详解,Linux系统中ps -l命令显示的英文含义
  19. 联想笔记本声音太小怎么办_笔记本声音太小,小编告诉你笔记本电脑声音太小解决方法...
  20. 仿知音漫画网站源码 PC+手机端 帝国cms7.5内核

热门文章

  1. 内容搜索排序表达式的最佳实践
  2. 计算机组成asr实验,计算机组成与结构实验讲义.doc
  3. 概念设计师凌云:《蜘蛛侠:平行宇宙》和《证人》美术浅析
  4. 游戏测试:如何有效地报告 Bug?
  5. java jdbc数据库五种连接方式
  6. 曝台积电芯片要涨价:2022年至少上调10%
  7. 用户资源管理DBMS_RESOURCE_MANAGER
  8. sort 与 sorted 区别:
  9. 吴裕雄 python 神经网络——TensorFlow 图、张量及会话
  10. spring实现模板文件下载