闭包可以捕获局部作用域中的原始值,可以通过在函数内部定义一个内部函数,并在内部函数中访问外部函数的变量来实现。
以下是一个示例代码:
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()
时,它仍然能够访问并输出原始的局部作用域中的值。