老版本中20课的问题求助
课本中的闭包的例题,i =funX(8),但是i(5)就算知道i为function,也无法理解i(5)就能代表y=5,这要具体怎么理解呢,我晕菜了,求大神指点一二,非常感谢! i 就是 FuncX 里的 FuncY i就是funX的返回值,而funX的返回值是一个函数(funY)而funY的返回值会用到上面funX的参数,也就是x
而你在定义i的时候,把funX的参数x设置成了8
所以,现在再调用funY,也就是x(8)乘上传入的参数(5),
也就是40. i(5)就是FunX(40)? pyrhon萌新# 发表于 2020-5-17 19:47
i(5)就是FunX(40)?
不要扯{:10_249:} 这不是问嘛,不过我明白了,最近脑缺氧,谅解~ 谅解下~ 本帖最后由 Twilight6 于 2020-5-17 19:55 编辑
你的定义的函数:
def FunX(x):
def FunY(y):
return x * y
return FunY
首先:
i = FunX(8)
等价于i已经把外部的函数给装配好了:
def FunX(8):
def FunY(y):
return 8 * y
return FunY
然后你再次调用:
i(5)
结果:
def FunX(8):
def FunY(5):
return 8 * 5# 这边的值返回到FunY
return FunY# 这边最终输出40
>>> 40
如果对你有帮助,就设置个最佳吧~{:10_287:}
帮你写了一下注释。不知是否有帮助。
def FunX(x): # FunX 函数,需要一个参数x
def FunY(y): # FunY 函数,需要一个参数y
return x*y # FunY 函数的返回值,是x*y,其中x是外部函数FunX的变量
return FunY #这里返回值是FunY,是一个可执行函数,带有一个参数
i=FunX(8) #这里调用了FunX 函数,传入参数x=8,所以 i 是需要一个参数y的可执行函数,相当于给FunY起了一个名字
i(5)#这里执行可执行函数 i,传入参数为 5
页:
[1]