lzb1001 发表于 2023-6-10 07:17:35

这是个内嵌的闭包函数吗?

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

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

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

基于这两点,lambda函数是不是可以看做是外部函数make_repeat()内嵌的闭包?

isdkz 发表于 2023-6-10 09:18:00

是的,你完全正确。这个 lambda 函数是一个闭包。

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

在你给出的代码中, lambda 函数访问并使用了 make_repeat 函数的变量 n ,并且在 make_repeat 函数执行结束后,返回的 lambda 函数依然可以访问和使用变量 n ,所以这个 lambda 函数就是一个闭包。
页: [1]
查看完整版本: 这是个内嵌的闭包函数吗?