Python闭包函数
Python闭包函数的
Python闭包函数是一个嵌套函数,外层函数返回值是内层函数名。
闭包函数的主要应用是实现装饰器(前面讲过)。
# 闭包函数
def myfun():
a=10
def infun(): # 内层函数
b=a+5
return b
return infun # 把内层函数名作为外层函数的返回值
resfun=myfun() # 这个函数返回的结果是个函数名
print(resfun) # 函数名
print(resfun()) # 函数调用
运行结果
C:UsershccmaAnaconda3python.exe E:/wkp01/p00/test01/py001/t09.py
<function myfun.<locals>.infun at 0x0000020043792708>
15
Process finished with exit code 0
维基上对闭包的解释:
在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。
带参数的闭包函数如下。
def myfun(a):
b=5
def infun(x):
return a * x - b
return infun
resfun = myfun(1)
print(resfun(6)) # 1
resfun = myfun(2)
print(resfun(10)) # 15
闭包函数返回的是内层函数名,而内层函数被返回到外面调用。调用的内层函数仍然可以使用闭包中的外层变量,比如b=5。这个变量与内层函数共同存在,形成统一运行环境。