在 Python 中,闭包是指一个函数能够访问其词法作用域中定义的变量,即使该函数在其词法作用域之外被调用。这是因为 Python 使用词法作用域,这意味着变量的作用域是在函数定义的时候确定的,而不是在函数调用的时候确定的。
闭包的一个简单示例如下:
def create_closure():
x = 10
def inner_function():
return x
return inner_function
closure = create_closure()
print(closure()) # 输出:10
print(closure()) # 输出:10
在上述示例中,create_closure
函数定义了一个内部函数inner_function
,该函数可以访问外部函数定义时创建的变量x
。create_closure
函数还返回了inner_function
函数,这意味着可以在外部函数调用create_closure
函数时获取inner_function
函数。当外部函数调用closure
函数时,它会返回内部函数,该函数可以访问x
变量,并返回x
的值。由于x
变量在外部函数定义时创建,因此内部函数可以在外部函数调用结束后仍然能够访问它。
闭包的一个常见用途是实现私有变量的封装,在这种情况下,外部函数可以访问闭包函数内部的私有变量,但外部函数无法直接修改这些私有变量。