Python闭包

闭包定义:

如果在一个内部函数里,对在外部作用于(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。

闭包(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))

小结:

闭包通过外面的一层层的函数传递的参数,让最内层的函数可以直接调用外层函数所有参数,从而实现不动原函数的代码,增加新功能的办法。

谢谢!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181113G1YOSM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券