案例如下:
def outer_function(x):
# 定义外层函数
def inner_function(y):
# 定义内层函数
return x + y # 内层函数引用了外层函数的变量x
return inner_function # 外层函数返回内层函数
closure = outer_function(10) # 调用外层函数,并将返回的内层函数赋值给变量closure
result = closure(5) # 调用内层函数,传入参数5
print(result) # 输出15
上述代码中的 inner_function
是一个闭包函数。闭包就是在函数内部定义的函数,它可以访问到外层函数的变量和参数,并且在外层函数返回后仍然能够保持对这些变量和参数的访问。
在本例中,当调用 outer_function(10)
时,它返回一个内层函数 inner_function
,该函数能够访问到外层函数的变量 x
并将其与传递给它的参数 y
相加。由于内层函数引用了外层函数的变量 x
,所以 x
的值在外层函数返回后仍然会被保存在内存中。因此,在调用 closure(5)
时,inner_function
仍然能够访问到 x
的值,从而返回了 15
。