闭包函数
一、基础知识
所谓闭包函数就是定义在函数内部的函数,但是他有一些限制条件:
1、定义在函数内部
2、用到了外部函数名称空间中的名称
def index():
name = 'jason'
def inner():
print(name)
二、作用
闭包函数在使用的过程中的作用其实很简单——是另外一种给函数体代码传参的方式!!!
通过之前的学习我们了解到,当函数需要参数的时候我们会在括号内加入他们需要的参数,这是给函数传参的第一种方式。第二种方式就是使用闭包函数给其他函数体代码传参。代码举例:
# 给函数体代码传参的方式1:代码里面缺什么变量名形参里面就补什么变量名
def register(name,age):
print(f"""
姓名:{name}
年龄:{age}
""")
register('jason', 18)
# 给函数体代码传参的方式2:闭包函数
def outer(name, age):
def register():
print(f"""
姓名:{name}
年龄:{age}
""")
return register
res = outer('jason', 18)
res()
res()
res = outer('kevin', 28)
res()
res()
res()
第一种情况下的参数传参简单明了就不做具体说明了,第二种方式是使用了闭包函数的方式来传参的,由于工作流程有些绕,我们分条具体解释:
1.当我们运行代码的时候会先定义函数,但是不会运行其中的代码。
2.接着就到了res代码堆这里,我们需要先看代码右边的内容进行了什么操作
3.第一个res代码运行了outer函数并且给他传入了’jason’, 18两个参数,之后我们回到代码内部根据流程运行代码,最后发现返回值是register函数名
4.这里我们可以发现第一个res变量名绑定了register函数名
5.后面两行代码都是在调用res绑定的当前参数下的register函数,返回的信息是’jason’, 18
6.到了第二次给res变量名赋值的地方,也是一样的判断方式,可以发现现在res绑定成了在’kevin’, 28两个参数下的register函数
7.之后又是连续几次调用res绑定的在’kevin’, 28两个参数下的register函数,返回的信息也是’kevin’, 28
原文地址:http://www.cnblogs.com/zhihuanzzh/p/16796847.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性