鱼C论坛

 找回密码
 立即注册
查看: 2091|回复: 2

[已解决]Python闭包问题

[复制链接]
发表于 2019-1-29 14:02:09 | 显示全部楼层 |阅读模式

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

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

x
6. 以下是“闭包”的一个例子,请你目测下会打印什么内容?
def funX():
    x = 5
    def funY():
        nonlocal x
        x += 1
        return x
    return funY
a = funX()
print(a())
print(a())
print(a())

为什么是6 7 8 啊
最佳答案
2019-1-29 14:10:48
简单这样理解:
内部函数被保留
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-29 14:10:48 | 显示全部楼层    本楼为最佳答案   
简单这样理解:
内部函数被保留
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-29 14:25:25 | 显示全部楼层
a=funX()
a是函数funX的运行结果,即funY,闭包只有a再加括号,然而a()并不是运行funX,而是执行funY的内容,因此x没有重置为5,每次运行+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 21:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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