鱼C论坛

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

零基础新手求解释

[复制链接]
发表于 2016-6-12 15:50:58 | 显示全部楼层 |阅读模式

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

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

x
def fun3():
        d=9
        def fun4():
                nonlocal d
                d+=d
                return d
        return fun4()


def fun3():
        d=9
        def fun4():
                return d+d
        return fun4()
区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-12 16:26:22 | 显示全部楼层
这两个函数只是为了介绍关键 nonlocal 吧, 你在外面定义了d如果想在闭包内给d赋值就要用到nonlocal 这个关键字。详情可以搜索一下nonlocal 关键字的介绍。

评分

参与人数 1荣誉 +3 鱼币 +10 收起 理由
~风介~ + 3 + 10 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-12 16:34:32 | 显示全部楼层
梦里不知身是客 发表于 2016-6-12 16:26
这两个函数只是为了介绍关键 nonlocal 吧, 你在外面定义了d如果想在闭包内给d赋值就要用到nonlocal 这个关 ...

谢谢!您的答复。这两个小例子是我自己听视频写的,第一个就是按照视频里面的例子,如果闭包给fun4()内的函数d赋值就要nonlocal声明。 另外一个没有声明只是写法不一样,同样可以得到想要的值。这个我有点不理解区别。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-12 16:39:22 | 显示全部楼层
qsec 发表于 2016-6-12 16:34
谢谢!您的答复。这两个小例子是我自己听视频写的,第一个就是按照视频里面的例子,如果闭包给fun4()内 ...

第二个只是用到了d的值,并没有去修改d所以不用nonlocal修饰符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-12 16:42:25 | 显示全部楼层
梦里不知身是客 发表于 2016-6-12 16:39
第二个只是用到了d的值,并没有去修改d所以不用nonlocal修饰符。

明白啦!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 17:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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