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))
f6()
函数定义了一个局部变量live
,并赋值为 50。live_change()
函数是f6()
函数内的一个内嵌函数。它接受一个参数blood
,如果blood
为None
,则返回live
的当前值;否则,将live
的值增加blood
,然后返回live
的新值。这里使用了nonlocal
关键字来声明live
变量是外部函数f6()
中的变量,而不是live_change()
函数内的局部变量。- 外部函数
f6()
返回了内部函数live_change()
,因此volume
变量现在引用了live_change()
函数。- 接下来,打印了
volume
的值,它实际上是一个函数对象。- 然后调用
volume()
,由于没有传递参数,因此它返回live
的当前值,即 50。- 最后调用
volume(20)
,将blood
参数传递为 20,这导致live
的值增加 20,所以返回值为 70。
⭐重要理解:
外部函数
f6()
返回了内部函数live_change()
,因此volume
变量现在引用了live_change()
函数。
原文地址:https://blog.csdn.net/m0_62894677/article/details/136943564
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!