鱼C论坛

 找回密码
 立即注册
查看: 1114|回复: 6

这里的return funY是什么意思?代码里没有这个变量呀?

[复制链接]
发表于 2019-4-29 16:22:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

a = funX()
print(a())
print(a())
print(a())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-29 16:26:01 | 显示全部楼层
funY是你设定的内嵌函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-29 16:27:14 | 显示全部楼层
风丶少 发表于 2019-4-29 16:26
funY是你设定的内嵌函数

那为什么不写作funY()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 16:32:47 | 显示全部楼层
channel21138 发表于 2019-4-29 16:27
那为什么不写作funY()

可以这样写,就是引用的时候不一样,应用直接a就可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 16:46:18 | 显示全部楼层
channel21138 发表于 2019-4-29 16:27
那为什么不写作funY()

funy()是调用函数  funy就相当于一个变量指向了那个函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 16:55:52 | 显示全部楼层
     a = funX() 为 函数 funX() 的局部变量 x 赋初值 5,由于函数 funX() 最终返回的是 funY,也就是函数 funY() 的入口地址,所以,a 与 函数 funY 相关联,表达式 a() 就是调用函数 funY()。后来每次执行 print(a()),都会调用 funY() 使外层传入变量 x 加1,所以,就有了最终看到的效果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-30 16:51:53 | 显示全部楼层
此人 发表于 2019-4-29 16:46
funy()是调用函数  funy就相当于一个变量指向了那个函数

但是funy这个变量没有被定义?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-4 01:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表