鱼C论坛

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

[已解决]关于全局变量申明的选择题不会做

[复制链接]
发表于 2020-12-8 11:24:44 | 显示全部楼层 |阅读模式

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

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

x
请问有大佬可以详细解释一下为什么选这个答案吗?
最佳答案
2020-12-8 12:35:32
在函数do_local中修改的只是该函数内的局部变量,不影响它外层的局部变量,所以执行完do_local函数后print打印的依然是scope函数的局部变量,得到的是  A:init
在函数do_nonlocal中声明了nonlocal,所以这里修改的loc是函数do_nonlocal的外层函数scope的局部变量,因此执行完该函数后,print打印loc得到的是 B:nonlocal
在函数do_global中声明了global,所以这里修改的loc是全局变量,全局变量不影响scope内的局部变量,因此在执行完do_global之后,print打印loc得到的是 C:nonlocal
在scope函数外,执行print打印的是全局变量loc,即在do_glocal中修改之后的loc,所以print打印的结果是 D:glocal
python3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-8 12:35:32 | 显示全部楼层    本楼为最佳答案   
在函数do_local中修改的只是该函数内的局部变量,不影响它外层的局部变量,所以执行完do_local函数后print打印的依然是scope函数的局部变量,得到的是  A:init
在函数do_nonlocal中声明了nonlocal,所以这里修改的loc是函数do_nonlocal的外层函数scope的局部变量,因此执行完该函数后,print打印loc得到的是 B:nonlocal
在函数do_global中声明了global,所以这里修改的loc是全局变量,全局变量不影响scope内的局部变量,因此在执行完do_global之后,print打印loc得到的是 C:nonlocal
在scope函数外,执行print打印的是全局变量loc,即在do_glocal中修改之后的loc,所以print打印的结果是 D:glocal
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-8 12:48:07 | 显示全部楼层
A.调用scope()中的do_local()函数,此时loc的值虽然在函数内部变了,但实际上并不会修改loc的值(局部变量)
nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量
B.调用do_nonlocal()函数,此时定义loc为nonlocal,则loc变为nonlocal
C.由于loc先被定义为nonlocal类型,所以在do-global()函数后并不会改变(使用外层的loc的值)
D.使用全局变量global loc后的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 20:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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