python学习笔记--闭包
来源:互联网 发布:企业私有云软件 编辑:程序博客网 时间:2024/06/05 06:31
一个函数A和一个函数B,其中B函数位于A函数体内部,同时B函数体内调用了B函数之外,A函数之内的其他变量x(包括A中传递过来的参数),此时,x称为B函数的环境变量,B函数和变量x就构成了一个闭包。而函数B是需要返回的,也就是返回函数B,其中在返回的时候,对A参数x的调用也包括在了里面,(有点封闭包含的意思,可能因此叫闭包)。此时A称为闭包函数
eg:
#outer function
def funcB():
y=10
def funcA(x):
return x+y
return funcA
此时funcA构成了一个闭包,而当调用的时候:
Y=20
A=funcB()
Print A(1),则输出11,即使外部定义了y也没用,因为对于funcA来说,其外部环境是funcB。
使用闭包创建了一种泛函数,这种泛函数具有一定的性质,那就是该函数一部分是可以按照一种形式变化,而另一部分是需要按照既定的规则(环境变量中定义的内容)来进行变化的。
比如说上面的例子,就实际上定义了一种情况:返回一个表达式 10+x,其中x可以随便变化,但是10是保持不变的。-------由此想到了另一种闭包的情况,也就是y也是变化的,那么此时y可以设置为funcB的参数,如下所示:
#outer function
def funcB(y):
def funcA(x):
return x+y
return funcA
此时,确定了一种形式的闭包,也就是必须x,y之间是加法,虽然x,y都可以随便变化,但是加法这种运算不可以变化,不知道是否还可以继续扩展….,我感觉应该还可以继续扩展,毕竟,运算类型也可以以参数的形式传入(不过此时可能需要进行运算类型的判断,这样就隐含了一种情况也就是说,可能运算类型是确定的有限的几种类型,不知道是否可以进一步将运算类型进行扩展,这样就可以自己定义运算类型了,继续扩展…)。
闭包有效减少了传递参数的个数。- Python学习笔记-闭包
- python学习笔记--闭包
- Python学习笔记----闭包
- Python学习笔记-包
- Python之闭包学习笔记
- python闭包学习笔记一
- python闭包学习笔记二
- python闭包学习笔记三
- python闭包学习笔记四
- Python语言学习笔记之闭包
- Python学习笔记——闭包
- python lxml包学习笔记
- Python 学习笔记random包
- 【Python学习笔记】-模块、包
- python学习笔记 --- 关于python的闭包
- python学习~闭包
- python闭包学习
- python 学习笔记 ---返回值为函数 闭包
- [搜索树算法]C4.5算法,个人笔记
- [mysql]mysql group by 用法解析(详细)
- 张博增是谁?为什么说他开启石墨烯的2.0时代!
- 有序广播
- 滑动窗口的最大值(Java实现)
- python学习笔记--闭包
- Java Spring SpringMVC mybatis CRM客户关系管理系统
- Maven命令执行安装jar包
- React Native组件(一)组件的生命周期
- numpy和pandas中数组的合并和拆分
- hdoj 2087 剪花布条
- windows安装 jenkins
- android studio gradle 两种更新方法更新
- c++ 运算符优先级