鱼C论坛

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

[已解决]課後作業第19課疑問..global

[复制链接]
发表于 2016-10-14 21:51:42 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 fdfanmo 于 2016-10-19 08:47 编辑

源碼
  1. var = ' Hi '

  2. print('01=',var)

  3. def fun1():
  4.     global var
  5.     var = ' Baby '
  6.     return fun2(var)

  7. print('02=',var)

  8. def fun2(var):
  9.     var += 'I love you'
  10.     fun3(var)
  11.     return var

  12. print('03=',var)

  13. def fun3(var):
  14.     var = ' 小甲鱼 '

  15. print('最後的=',fun1())
复制代码



打印
  1. 01=  Hi
  2. 02=  Hi
  3. 03=  Hi
  4. 最後的=  Baby I love you
复制代码



为什么 02 会打印 HI 而不是打印Baby ??
fun1()中的 global var 不就已经宣告 01 函数中的var 是全局变量了吗?
而fun2中的var变量又成功的变成了Baby ??
这是早么一回事呢?
最佳答案
2016-10-14 23:42:05
兄弟搞清楚程序执行顺序呀,你前面只是定义了函数并未调用,而你打印123都是在函数调用之前打印,函数未调用也就没有改变全局变量。最终打印结果改变是因为已经调用函数改变了字符串。你想打印2结果是baby那么就使用缩进把这条语句包含在函数fun1中就对了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-14 23:42:05 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
兄弟搞清楚程序执行顺序呀,你前面只是定义了函数并未调用,而你打印123都是在函数调用之前打印,函数未调用也就没有改变全局变量。最终打印结果改变是因为已经调用函数改变了字符串。你想打印2结果是baby那么就使用缩进把这条语句包含在函数fun1中就对了。

评分

参与人数 1荣誉 +5 收起 理由
fdfanmo + 5 感谢无私奉献!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2016-10-15 09:22:56 | 显示全部楼层
星空·无限 发表于 2016-10-14 23:42
兄弟搞清楚程序执行顺序呀,你前面只是定义了函数并未调用,而你打印123都是在函数调用之前打印,函数未调 ...

谢谢帮解~这样我明白了..
但是还是有其他不明白处..
程序下了调用print('最後的=',fun1())
所以他去调用了fun1() 而 fun1() 被调用后 改变了var = ' Hi '这个全局变量为' Baby '
但是fun1()最后一句是return fun2(var)
return 作用是返回值 应该是要 return var 将var的值返回回去给print('最後的=',fun1())才对..
难道return 是让程序去调用 fun2(var)函数??
为什么fun1()不是这样写?
让fun1()在最后一句的时后去调用fun2(var)函数
  1. def fun1():
  2.     global var
  3.     var = ' Baby '
  4.     fun2(var)
复制代码

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-23 08:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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