@[TOC] Python的闭包函数
如果一个函数定义a在另一个函数b的作用域内,并且引用了外层函数b的变量,则该函数称为闭包。闭包是Python所支持的一种特性,它让在非global scope定义的函数可以引用其外围空间中的变量,这些外围空间中被引用的变量叫做这个函数的环境变量。环境变量和这个非全局函数一起构成了闭包。
具体理解为,如果将函数作为返回值,它返回了一个函数+这个函数所需要的所有变量
闭包特点:
一个函数a返回的函数对象b,这个函数对象b执行的话依赖非b函数内部的变量值,这个时候,函数返回的实际内容如下:
1 函数对象b
2 函数对象b需要使用的外部变量和变量值 (在a里)
以上就是闭包
闭包必须嵌套在一个函数里,必须返回一个调用外部变量的函数对象,才是闭包
举例说明:
def say(a):
a = 0
def speak():
print(a) #调用了函数外面的变量,固speak()为闭包函数
return speak #返回speak函数的引用和speak需要用的变量a
a = 1
h = say(a) #在这里h接收到了speak闭包函数的地址,和speak需要的a变量
h() #调用h函数
print(a) #h函数内部a是0,然而外部a还是1,它们是不同地址的a
输出是
0
1