鱼C论坛

 找回密码
 立即注册
查看: 1288|回复: 4

[已解决]020讲的课后作业6

[复制链接]
发表于 2018-2-3 15:45:24 | 显示全部楼层 |阅读模式

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

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

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

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

小甲鱼说“funX()没有被释放”,完全没有搞明白啊!调用funX()时不时每次都要将x赋值为5吗?
最佳答案
2018-2-3 20:55:03
duke0522 发表于 2018-2-3 20:00
所以我很纳闷为什么没有用到x = 5呢?
print(funX()())的结果每次都用到x = 5了
print(a())和print(fun ...

因为 a 只是funX()的一个实例化对象 ,并不等于 funX() ,你在程序里进行 a == funX() 判断就知道了,返回的是    False,而不是 True。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-3 16:37:09 | 显示全部楼层
你其实测试一下就知道,每次打印都相当于print(funY()),并没有用到前面的 x = 5。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-3 20:00:00 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-3 16:37
你其实测试一下就知道,每次打印都相当于print(funY()),并没有用到前面的 x = 5。

所以我很纳闷为什么没有用到x = 5呢?
print(funX()())的结果每次都用到x = 5了
print(a())和print(funX()())的结果是不一样的
为什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-3 20:55:03 | 显示全部楼层    本楼为最佳答案   
duke0522 发表于 2018-2-3 20:00
所以我很纳闷为什么没有用到x = 5呢?
print(funX()())的结果每次都用到x = 5了
print(a())和print(fun ...

因为 a 只是funX()的一个实例化对象 ,并不等于 funX() ,你在程序里进行 a == funX() 判断就知道了,返回的是    False,而不是 True。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-3 21:13:31 From FishC Mobile | 显示全部楼层
duke0522 发表于 2018-2-3 20:00
所以我很纳闷为什么没有用到x = 5呢?
print(funX()())的结果每次都用到x = 5了
print(a())和print(fun ...

虽然还是不明白,不过再学一段时间,回来再看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 04:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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