概念:将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象称为闭包。
用处:
1 编写惰性求值或延迟求值的代码,闭包和套嵌函数特别有用,例如:
from urllib import urlopen def page(url): def get(): return urlopen(url).read() return get get()函数中执行的计算实际上延时到了程序后面对get()求值的时候,例如: baidu = page('http://www.baidu.com') google = page('http://www.google.com.hk') baidu_data = baidu() google_data = google()
2 需要在一系列函数调用中保持某个状态,使用闭包是一种非常高效的方式,例如:
#计数器 def countdown(n): def next(): nonlocal n #使用nonlocal作为关键字的原因是为了避免与已有的源代码冲突 r = n n -= 1 return r return next #用例 next = countdown(10) while True: v = next() #获取下一个值 if not v:break
闭包用于保存内部计数器的值n,每次调用内部的next()时,他都更新并返回这个计数器变量的前一个值。
网友66.*.*.212[火星]2021-04-19 10:54
网友77.*.*.54[捷克]2021-04-19 10:40
网友220.*.*.171[北京]2021-04-19 10:40
网友101.*.*.140[火星]2021-04-19 10:38
发表评论
亲~ 评论内容是必须的哟! o(∩_∩)o
昵称
邮箱
主页
评论