大锤python日记(闭包的简要说明)

66 阅读1分钟

案例如下:

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