自学内容网 自学内容网

python函数

函数的闭包理解

代码:

def f6():
    live=50
    def live_change(blood=None):
        nonlocal live
        if blood==None:
            return live
        else:
            live+=blood
        return live
    return live_change
volume=f6()
print(volume)
print(volume())
print(volume(20))
  1. f6() 函数定义了一个局部变量 live,并赋值为 50。
  2. live_change() 函数是 f6() 函数内的一个内嵌函数。它接受一个参数 blood,如果 bloodNone,则返回 live 的当前值;否则,将 live 的值增加 blood,然后返回 live 的新值。这里使用了 nonlocal 关键字来声明 live 变量是外部函数 f6() 中的变量,而不是 live_change() 函数内的局部变量。
  3. 外部函数 f6() 返回了内部函数 live_change(),因此 volume 变量现在引用了 live_change() 函数。
  4. 接下来,打印了 volume 的值,它实际上是一个函数对象。
  5. 然后调用 volume(),由于没有传递参数,因此它返回 live 的当前值,即 50。
  6. 最后调用 volume(20),将 blood 参数传递为 20,这导致 live 的值增加 20,所以返回值为 70。

⭐重要理解:

 外部函数 f6() 返回了内部函数 live_change(),因此 volume 变量现在引用了 live_change() 函数。


原文地址:https://blog.csdn.net/m0_62894677/article/details/136943564

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!