1、定义
如果在一个内部函数里,对在外部作用域但不是全局作用域的变量进行了引用,那么内部函数就被认为是闭包。简言之,就是嵌套函数的环境下,内部函数引用了外部函数的局部变量,这个内层函数就被认为是闭包。
or
在一个外函数中定义了一个内函数,内函数中运用了外函数的局部变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。
demo:
>>> def a(x): ## 外函数:a(), 内函数:b(),
def b(y): ## 内函数b()引用了外函数的局部变量x,
print(x + y)
return b ## 外函数的返回值是内函数的引用,构成一个闭包
>>> c = a(5) ## 内函数b()引用外函数的局部变量x, 外函数的返回值是内函数的引用
>>> c(20)
25
>>> def a(x):
y = 30
def b():
print(x + y)
return b
>>> c = a(20)
>>> c()
50
>>> d = a(80)
>>> d()
110