阿小信大人的头像
Life is short (You need Python) Bruce Eckel

Python的函数闭包2014-09-02 05:07

概念:将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象称为闭包。

用处:

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()时,他都更新并返回这个计数器变量的前一个值。

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Python#  
分享到:
阅读[1164] 评论[0]

上一篇:QQ相关接口

你可能也感兴趣的文章推荐

本文最近访客

发表评论