Python中的闭包是如何实现的?

  • 调用外部函数,生成闭包:通过调用外部函数,来生成闭包。此时,内部函数引用了外部函数的变量,并且可以在外部函数执行完毕后继续访问和操作这些变量。

    def outer_function():
    # 外部函数的变量
    x = 10
    # 定义内部函数
    def inner_function():
    # 引用外部函数的变量
    print(x)
    # 返回内部函数
    return inner_function

    # 调用外部函数,生成闭包
    closure = outer_function()

    登录后复制

    通过以上步骤,我们就成功地实现了Python中的闭包。此时,我们可以通过调用闭包来访问和操作外部函数的变量。

    closure() # 输出:10

    登录后复制

    闭包的一个重要特性是,在外部函数执行完毕后,闭包仍然可以访问并操作外部函数的变量。这是因为闭包会保留对外部函数变量的引用,而不是拷贝变量的值。因此,我们可以通过多次调用闭包来观察闭包的行为。

    def outer_function():
    # 外部函数的变量
    x = 10
    # 定义内部函数
    def inner_function():
    # 引用外部函数的变量
    print(x)
    # 返回内部函数
    return inner_function

    # 调用外部函数,生成闭包
    closure = outer_function()

    closure() # 输出:10

    # 修改外部函数的变量
    outer_function.x = 20

    closure() # 输出:20

    登录后复制

    通过上述代码,我们可以看到闭包在调用时会输出外部函数的变量,即使在外部函数执行完毕后,闭包仍然可以访问和操作外部函数的变量。