注册 登录
编程论坛 Python论坛

闭包问题

yakantosat 发布于 2010-11-05 16:47, 859 次点击
在书上看到一个例子:
def counter(start_at=0):
    count = [start_at]
    def incr():
        count[0] += 1
        return count[0]
    return incr
先是count列表接受一个默认值start_at,然后再在counter函数的作用域中声明一个函数incr,函数incr调用外层的变量count,并对其进行加1的操作,然后返回这个仅有的值。内部的函数在执行之后看做是count[0]的值,而外部函数返回的是内部函数的引用。那么,执行之后内部函数的标签还是存在吗?外层函数是怎么返回这个引用的呢?请哪位大哥帮小弟解释一下了,谢谢了!
2 回复
#2
KLML884222010-11-17 13:58
你这个最后返回的是一个incr函数,结果为:<function incr at 0x019DAFB0>
#3
_jianhua2011-08-24 23:58
工厂函数
1