闭包是指绑定在函数内部作用域的变量引用,这些变量因为外部函数已经结束执行而被储存在函数的闭包中。闭包可以在函数执行结束后访问并修改这些变量。
闭包在函数返回后依然存在,它可以在下一次调用中使用。因此,闭包单元在函数定义时被求值。
Lambda函数也可以有闭包。在下面的代码示例中,我们定义了一个接受一个整数参数的Lambda函数,该函数返回一个增加参数整数加上闭包中保存的整数变量x的输入函数的引用。在例子中,我们将闭包内的变量x初始化为10,然后使用闭包函数两次,每次使用都会保留闭包中x的引用,以便下一次使用。
def lambda_function(x):
return lambda y: x + y
closure_function = lambda_function(2)
print(closure_function(3)) # 输出 5
x = 10
closure_function = lambda_function(2)
print(closure_function(x)) # 输出 12
x = 20
print(closure_function(x)) # 输出 22
在上面的代码示例中,我们成功地创建了一个带有闭包的lambda函数,并使用其引用来访问和修改闭包中的变量。