鱼C论坛

 找回密码
 立即注册
查看: 1651|回复: 1

[已解决]问题求助 ————闭包

[复制链接]
发表于 2023-3-28 10:39:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wang1313131313 于 2023-3-28 10:41 编辑

请问闭包为生么能保存数据   即  “自由变量在闭包存在的期间,其中的值也会一直存在。因此闭包可以持有状态。”
这两个图有什么区别呢
屏幕截图 2023-03-28 103824.png
最佳答案
2023-3-28 13:15:33
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__[0].cell_contents)  # 输出 10


在这个例子中,inner_function是一个闭包,它引用了外部函数outer_function的变量x。当我们调用outer_function(10)时,它返回了一个闭包对象,并将变量x的值设置为10。我们可以通过访问闭包对象的__closure__属性来获取闭包中保存的外部变量。
屏幕截图 2023-03-28 104100.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-28 13:15:33 | 显示全部楼层    本楼为最佳答案   
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__[0].cell_contents)  # 输出 10


在这个例子中,inner_function是一个闭包,它引用了外部函数outer_function的变量x。当我们调用outer_function(10)时,它返回了一个闭包对象,并将变量x的值设置为10。我们可以通过访问闭包对象的__closure__属性来获取闭包中保存的外部变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表