闭包

2017-06-24  本文已影响6人  钱塘

定义:如果在一个内部函数里,对在外部作用域的变量进行了引用,那么内部函数就被认为是闭包

闭包的效果:闭包的函数可以脱离原来的函数进行引用

闭包指延伸了作用域的函数,其中包含函数定义体中引用,但是不在定义体中定义的非全局变量,函数是不是匿名的没有关系,关键是它能访问定义体之外定义的非全局变量。

def make_averager():
    series = []
    def averager(new_value):
        seires.append(new_value)
        total = sum(series)
        return total/len(series)
    return averager

averager的闭包延伸到那个函数的作用域之外,包含自由变量series的绑定。

综上,闭包是一种函数,它会保留定义函数时存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用那些绑定。

上一篇下一篇

猜你喜欢

热点阅读