问题求助 ————闭包
本帖最后由 wang1313131313 于 2023-3-28 10:41 编辑请问闭包为生么能保存数据 即“自由变量在闭包存在的期间,其中的值也会一直存在。因此闭包可以持有状态。”
这两个图有什么区别呢
Python中的闭包(closure)是指一个函数对象和它所引用的外部变量组成的一个整体。当一个函数定义在另一个函数内部,并且引用了外部函数的变量时,就会形成一个闭包。
闭包中的数据保存在函数对象的__closure__属性中,这个属性是一个元组,包含了所有被闭包引用的外部变量。每个元素是一个cell对象,保存了变量的值。这些cell对象可以通过cell_contents属性获取。
下面是一个示例代码,展示了闭包中的数据保存在哪里:
def outer_function(x):
def inner_function(y):
return x + y
return inner_function
closure = outer_function(10)
print(closure.__closure__.cell_contents)# 输出 10
在这个例子中,inner_function是一个闭包,它引用了外部函数outer_function的变量x。当我们调用outer_function(10)时,它返回了一个闭包对象,并将变量x的值设置为10。我们可以通过访问闭包对象的__closure__属性来获取闭包中保存的外部变量。
页:
[1]