鱼C论坛

 找回密码
 立即注册
查看: 3654|回复: 8

[已解决]求大神分析:下面两个代码中sum变量位置不同,导致其中一个代码运行不了的原因

[复制链接]
发表于 2021-5-19 16:24:51 | 显示全部楼层
本帖最后由 Peteryo01223 于 2021-5-19 16:40 编辑

我的理解:代码一里,sum是个全局变量,不跟随后面的 for 循环被重新赋值。代码二里,sum是个局部变量,可以随时被赋值。
FishC说过,全局变量危害大。请谨慎使用。
全局变量的危害:
  • 不必要的常量频繁使用,代码阅读变得吃力;
  • 会导致软件分层的不合理,全局变量相当于一条快捷通道,它容易使程序员模糊了“设备层”和“应用层”之间的边界。
  • 软件的分层不合理,到了后期维护,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺地修改;
  • 全局变量大量使用,少不了有些变量流连忘返于中断与主回圈程序之间。这个时候如果处理不当,系统的bug就是随机出现的,无规律的,这时候初步显示出病入膏肓的特征来了,没有大牛来力挽狂澜,注定慢性死亡。
  • 如果您的系统中大量使用全局变量,那么您已经成功得到一个畸形的系统,它处于一个神秘的稳定状态!你看着这台机器,机器也看着你,相对无言,心中发毛。你不确定它什么时候会崩溃,也不晓得下一次投诉什么时候会到来。

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-19 17:18:55 | 显示全部楼层
本帖最后由 Peteryo01223 于 2021-5-19 17:35 编辑
M小姐 发表于 2021-5-19 16:53
谢谢您的解答~~
如果这是一个结论,我倒是以后都能记住。
但就是这个小代码里用全局变量来解释多少感觉 ...


我帮助解释一下上面 Jackz007 的回答,以 Jackz007 的原文为准
  • 每次 Python 选出一个100至1000之间的 i,Python 就要计算一次这个 i 的 sum 的值,即:用这个 i 赋值了的 temp 的个、十、百三个位置上的单个数字提取出来,计算他们三个的立方和,得到一个 sum 的值。然后判断,这个 sum 的值是不是等于这个 i。是的话,就 print 。然后,下一个 for 循环又开始了,i 的值变了,sum 必须要做清零的动作(代码2),才能开始新的判断。
  • 在此过程中,如果 sum 是一个全局变量的话(代码1),sum 不在每次 for 循环开始时归零,那么 Python 计算 sum 值的时候,会出现不同 i 值之间的不同 sum 的叠加,就乱了,不符合题目要求。


另外:全局变量与局部变量两者的本质区别就是在于作用域(我网上抄的),用通俗的话来理解的话, 全局变量是在整个py文件中声明,全局范围内都可以访问 局部变量是在某个函数中声明的,只能在该函数中调用它。

评分

参与人数 1荣誉 +3 鱼币 +2 贡献 +1 收起 理由
M小姐 + 3 + 2 + 1 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-23 05:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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