鱼C论坛

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

[已解决]这是个内嵌的闭包函数吗?

[复制链接]
发表于 2023-6-10 07:17:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lzb1001 于 2023-6-10 09:37 编辑

def make_repeat(n):
        return lambda s: s * n

---lambda函数在外部函数make_repeat()内
---lambda函数引用了外部函数make_repeat的变量

基于这两点,lambda函数是不是可以看做是外部函数make_repeat()内嵌的闭包?
最佳答案
2023-6-10 09:18:00
是的,你完全正确。这个 lambda 函数是一个闭包。

在Python中,闭包是一个函数对象,它有两个重要的特性和能力:
1. 它可以直接或间接地访问封闭函数(即,包含闭包的函数)的变量。
2. 它被绑定到了那些变量的生命周期中,即使封闭函数的执行已经结束,它也能继续使用那些变量。

在你给出的代码中, lambda 函数访问并使用了 make_repeat 函数的变量 n ,并且在 make_repeat 函数执行结束后,返回的 lambda 函数依然可以访问和使用变量 n ,所以这个 lambda 函数就是一个闭包。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-10 09:18:00 | 显示全部楼层    本楼为最佳答案   
是的,你完全正确。这个 lambda 函数是一个闭包。

在Python中,闭包是一个函数对象,它有两个重要的特性和能力:
1. 它可以直接或间接地访问封闭函数(即,包含闭包的函数)的变量。
2. 它被绑定到了那些变量的生命周期中,即使封闭函数的执行已经结束,它也能继续使用那些变量。

在你给出的代码中, lambda 函数访问并使用了 make_repeat 函数的变量 n ,并且在 make_repeat 函数执行结束后,返回的 lambda 函数依然可以访问和使用变量 n ,所以这个 lambda 函数就是一个闭包。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 22:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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