闭包(Closure)是指在一个函数内部定义的函数,并且内部函数可以访问到外部函数的变量,即使外部函数已经执行结束。简单来说,闭包允许一个函数在定义体内引用了在该函数体之外定义的变量。
下面是一个闭包的示例:
def outer_function(x):
def inner_function(y):
return x + y
return inner_function
closure = outer_function(5)
result = closure(3)
print(result) # 输出 8
在这个例子中,outer_function
是一个外部函数,它接受一个参数 x
。在 outer_function
内部,我们定义了另一个函数 inner_function
,它接受参数 y
。inner_function
访问了 outer_function
中的变量 x
,即使 outer_function
执行完毕后,我们仍然可以调用 closure(3)
,得到结果 8
。
闭包在许多情况下非常有用,特别是在需要保留某些状态或上下文的情况下。例如,它们经常用于函数工厂,也可以用于实现类似于私有变量或属性的功能。
需要注意的是,闭包会保留对其作用域中的变量的引用,这可能导致内存占用较高,因此在使用闭包时应当注意不要滥用,避免产生不必要的资源消耗。