寒暄371 发表于 2020-11-14 11:30:57

20讲第6题最后三行print没看懂怎么来的

本帖最后由 寒暄371 于 2020-11-14 11:37 编辑

最后三个print怎么来的,为什么是不同的值?
说说我的理解,先定义funX,然后内嵌funY,返回x给funY是6,继续返回给funX还是6,第一个print(),打印a=6,怎么后面继续打印a,后面的就没看明白了

def funX():
    x = 5
    def funY():
      nonlocal x
      x += 1
      return x
    return funY

a = funX()
print(a())
print(a())
print(a())

suchocolate 发表于 2020-11-14 11:56:29

funX返回的是函数funY,因此:
a = funX() 等价于 a = funY
因此 a()就等价于funY()

Twilight6 发表于 2020-11-14 14:22:23



参考下下面的帖子吧,善用论坛的搜索功能哦~

[已解决]20讲第 6 题
https://fishc.com.cn/thread-175884-1-1.html
(出处: 鱼C论坛)

寒暄371 发表于 2020-11-14 15:10:13

suchocolate 发表于 2020-11-14 11:56
funX返回的是函数funY,因此:
a = funX() 等价于 a = funY
因此 a()就等价于funY()

非常感谢你的回复,直到看到你楼下的链接才彻底看明白

寒暄371 发表于 2020-11-14 15:11:52

Twilight6 发表于 2020-11-14 14:22
参考下下面的帖子吧,善用论坛的搜索功能哦~

[已解决]20讲第 6 题


非常感谢,以后先搜索帖子再发问,看样子这个答案还是困扰不少新鱼友
页: [1]
查看完整版本: 20讲第6题最后三行print没看懂怎么来的