Python--12 内嵌函数和闭包
内嵌函数/内部函数
>>> 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 内嵌函数和闭包相关推荐
- python中闭包函数_Python的闭包问题(关于内嵌函数引用闭包函数的变量问题)
一.闭包: 记得:闭包的特性就是:内嵌函数会保存它引用的外围函数的变量值. 闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数和被引用的变量等 ...
- 原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念
原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念. 我是从这里看来的: http://blog.dreambrook.com/soloist/archive/2005/03/13/526.a ...
- 零基础入门学习Python(19)-内嵌函数和闭包
global关键字 全局变量的作用域是整个模块,也就是代码段内所有的函数内部都可以访问到全局变量 注意,在函数内部仅仅去访问全局变量就好,不要试图去修改它,如果随意修改全局变量的值,很容易牵一发而动全 ...
- 小甲鱼python第二十讲(内嵌函数和闭包)
内嵌函数 def fun1():print("fun1正在被调用...")def fun2():print("fun2正在被调用..")fun2()#在fun1 ...
- 课时20:内嵌函数和闭包
目录: 一.global关键字 二.内嵌函数 三.闭包 四.课时20课后习题及答案 ******************** 一.global关键字 ******************** 全局变量 ...
- python内嵌函数和闭包与java 匿名内部类_Lambda表达式与匿名内部类的联系和区别...
Java Lambda 表达式的一个重要用法是简化某些匿名内部类的写法,因此它可以部分取代匿名内部类的作用. Lambda 表达式与匿名内部类的相同点如下: Lambda 表达式与匿名内部类一样,都可 ...
- python内嵌函数和闭包与java 匿名内部类_Java匿名内部类构造原理分析
很明显,我们的匿名内部类有了名字 InnerTest$1,而且是继承自 Test class InnerTest$1 extends Test 这个类中有一个成员final InnerTest thi ...
- 8.局部变量/全局变量global/内嵌函数/闭包nonlocal
函数:有返回值 过程:无返回值 注解:在python中,只有函数(每个函数都有返回值),没有过程>>> def hello():print("first")> ...
- python内置函数与闭包_Python进阶(五)----内置函数Ⅱ 和 闭包
Python进阶(五)----内置函数Ⅱ 和 闭包 一丶内置函数Ⅱ ####内置函数#### 特别重要,反复练习 ###print() 打印输入 #sep 设定分隔符 # end 默认是换行可以打印到 ...
最新文章
- ONNX MLIR方法
- 漫画:别人的35岁!
- eclipse不支持泛型_C++ 泛型编程(一)
- php封装的数据库操作文件夹,PHP中对数据库操作的封装_php
- Google AJAX 搜索 API
- Freescale i.mx28 Boot-stream分析
- ehlib的DBGridEh控件中使用过滤功能的方法
- C++案例试炼:机房预约系统【附完整代码】
- Swift 获取字符的个数 、字符串的遍历
- python飞机大战项目概述需求_飞机大战需求分析报告.doc
- 【深入理解RabbitMQ原理】RabbitMQ 相关问题总结--RabbitMQ 如何确保消息发送和消费?
- 申请德国农工大学计算机案例,德州农工大学世界排名怎么样?
- linux安装wine
- python floor函数_Python floor() 函数 - Python 教程 - 自强学堂
- Qt 笔锋 钢笔 压力值
- 【大数据存储】Java操作jena练习
- 每日一读---补充正能量
- linux ps-l命令详解,Linux系统中ps -l命令显示的英文含义
- 联想笔记本声音太小怎么办_笔记本声音太小,小编告诉你笔记本电脑声音太小解决方法...
- 仿知音漫画网站源码 PC+手机端 帝国cms7.5内核