闭包定义:
如果在一个内部函数里,对在外部作用于(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,闭包是由函数和与其相关的引用环境组合而成的实体。
通俗的讲就是:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。它只不过是个“内层”的函数,由一个名字(变量)来指代,而这个名字(变量)对于“外层”包含它的函数而言,是本地变量。
# 定义一个函数
defadd(outer):
# 在函数内部再定义一个函数——闭包
defadd_in(inner):
# 打印一下内部的inner变量
print(str(inner))
returnouter + inner
# 返回闭包的结果
returnadd_in
# 给add函数赋值,这个20就是给参数outer
example = add(7)
# 这个100,其实给参数inner
print(example(70))
print(example(770))
小结:
闭包通过外面的一层层的函数传递的参数,让最内层的函数可以直接调用外层函数所有参数,从而实现不动原函数的代码,增加新功能的办法。
谢谢!
领取专属 10元无门槛券
私享最新 技术干货