鱼C论坛

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

[已解决]python 20课的闭包问题

[复制链接]
发表于 2018-8-26 23:21:10 | 显示全部楼层 |阅读模式

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

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

x
两张图上的程序 为什么结果不同 ?

是不是因为第一张图funx()()   每次都先把5赋给x  所以666

第二张图  看了很多其他的贴  a=funx() 这句话是 a就变成了指向funy函数的指针,存放了funy的地址   然后a() 就是执行funy()

但是 不是很懂 funy()里的 x加一后返回给谁了   返回给a()print输出   那x是怎么变成6  
最佳答案
2018-8-26 23:27:56
nonlocal 说明此变量已经不再是局部变量了,但是还不是全局变量
如果是局部变量,那么被改变的值将没有记录
【例子一】是因为每一次生成新的对象
【例子二】就可以看到变量貌似有全局的特性,但是只作用在函数范围内
[5TCA[}Z25~4J`0XZ]1E9B4.png

678

678
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-8-26 23:27:56 | 显示全部楼层    本楼为最佳答案   
nonlocal 说明此变量已经不再是局部变量了,但是还不是全局变量
如果是局部变量,那么被改变的值将没有记录
【例子一】是因为每一次生成新的对象
【例子二】就可以看到变量貌似有全局的特性,但是只作用在函数范围内
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-27 12:44:42 | 显示全部楼层
claws0n 发表于 2018-8-26 23:27
nonlocal 说明此变量已经不再是局部变量了,但是还不是全局变量
如果是局部变量,那么被改变的值将没有记 ...

哦哦  nonlocal x   x就类似全局变量 改变的值不会消失
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-27 12:50:08 | 显示全部楼层
HISIOISIH 发表于 2018-8-27 12:44
哦哦  nonlocal x   x就类似全局变量 改变的值不会消失

应该说比较像或者是C语言的【静态变量】。nonlocal 在函数外围是找不到的,它不是单纯的 local,但也不全然是 global
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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