淡色画 发表于 2020-5-17 19:43:16

老版本中20课的问题求助

课本中的闭包的例题,i =funX(8),但是i(5)就算知道i为function,也无法理解i(5)就能代表y=5,这要具体怎么理解呢,我晕菜了,求大神指点一二,非常感谢!

永恒的蓝色梦想 发表于 2020-5-17 19:45:51

i 就是 FuncX 里的 FuncY

qiuyouzhi 发表于 2020-5-17 19:45:52

i就是funX的返回值,而funX的返回值是一个函数(funY)
而funY的返回值会用到上面funX的参数,也就是x
而你在定义i的时候,把funX的参数x设置成了8
所以,现在再调用funY,也就是x(8)乘上传入的参数(5),
也就是40.

pyrhon萌新# 发表于 2020-5-17 19:47:09

i(5)就是FunX(40)?

永恒的蓝色梦想 发表于 2020-5-17 19:49:12

pyrhon萌新# 发表于 2020-5-17 19:47
i(5)就是FunX(40)?

不要扯{:10_249:}

pyrhon萌新# 发表于 2020-5-17 19:50:21

这不是问嘛,不过我明白了,最近脑缺氧,谅解~

pyrhon萌新# 发表于 2020-5-17 19:50:56

谅解下~

Twilight6 发表于 2020-5-17 19:53:24

本帖最后由 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:}

sunrise085 发表于 2020-5-18 08:59:54

帮你写了一下注释。不知是否有帮助。
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]
查看完整版本: 老版本中20课的问题求助