闭包可以捕获局部作用域中的原始值,可以通过在函数内部定义一个内部函数,并在内部函数中访问外部函数的变量来实现。
以下是一个示例代码:
def outer_function(x):
def inner_function():
print(x) # 在内部函数中访问外部函数的变量x
return inner_function
closure = outer_function(10) # 调用外部函数,并将返回的内部函数赋值给一个变量
closure() # 调用内部函数,输出10
在这个例子中,outer_function 是一个外部函数,它接受一个参数 x。在外部函数内部,定义了一个内部函数 inner_function,它可以访问外部函数的变量 x。然后,外部函数返回内部函数 inner_function。
我们通过调用 outer_function(10) 将其返回的内部函数赋值给变量 closure。然后,我们调用 closure() 来调用内部函数,这将输出 10。
在这个过程中,内部函数 inner_function 捕获了外部函数 outer_function 的局部变量 x,并在闭包中保持了这个值。所以当我们调用 closure() 时,它仍然能够访问并输出原始的局部作用域中的值。