鱼C论坛

 找回密码
 立即注册
查看: 2486|回复: 3

甲鱼老师一节课有个地方不明白

[复制链接]
发表于 2017-2-27 10:42:10 | 显示全部楼层 |阅读模式

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

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

x
问题.jpg

图片里
老师第一次用
Fun1()运行成功了

为什么函数里 return Fun2 改成 return Fun2(),第二次就失败了,不是直接可以用名字吗,两个有什么区别
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-2-27 10:52:46 | 显示全部楼层
如果第一个返回的是函数,第二个返回的是个值,为什么内部函数修改x变量不报错,而上面图片里的报错呢
>>> def Fun1():
        x = 5
        def Fun2():
                x = 6
                return x
        return Fun2()

>>> Fun1()
6
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-27 11:11:29 | 显示全部楼层
return Fun2是返回函数在内存中的地址,
return Fun2()是返回Fun2()中return的值
而Fun2()中的x是没有定义声明的 在Fun2中加多一句nonlocal x就可以使用了,这一句是声明
x *=x因为要引用x的值 所以x在使用前一定要先定义或者声明
x = 6是这里的x跟Fun1中的x不是同一个,而是重新创建一个也叫x 但作用范围只在Fun2
你可以试下在return Fun2()前加多一句print(x) 你就明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-27 11:25:34 | 显示全部楼层
谢谢,各位耐心的回答,听你们这一说,终于明白了不用自己闷头想半天了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-25 15:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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