def counter(start_at=0):
count = [start_at]
def incr():
count[0] += 1
return count[0]
return incr
a=counter(5)
print a
print type(a)
print a()
C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/core/a12.py
<function incr at 0x022925B0>
<type 'function'>
6
counter()做的唯一一件事就是接受一个初始化的值来开始计数,并将该值赋给列表count唯一一个成员。
然后定义一个incr()的内部函数,通过在内部使用变量count,我们创建了一个闭包
因为它现在携带了整个counter()作用域。
回调就是函数。闭包也是函数,但是他们能携带一些额外的作用域。
它们仅仅是带了额外特征的函数……另外的作用域。