鱼C论坛

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

[已解决]全局代码好难理解啊,求大神来解释解释这段代码

[复制链接]
发表于 2016-6-1 16:19:08 | 显示全部楼层 |阅读模式

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

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

x
看了小甲鱼的视频但还是不太懂,全局变量在函数里改变其值,会是生成一个临时的变量。
那明明最后var = ‘小甲鱼’了,为什么最后答案是Baby,i love you
最佳答案
2016-6-1 18:45:32
#看懂我这个,你就明白了
  1. var = 0

  2. def fun1():
  3.     global var
  4.     var += 1
  5.     return var

  6. def fun2(var):
  7.     var += 1
  8.     return var

  9. def fun3(var):
  10.     var += 1
  11.     return var

  12. print (fun1())       #输出1  执行后全局变量var = 1
  13. print (fun2(var))    #输出2  执行后局部同名var = 2,但全局变量var = 1 不信看下一条print()语句
  14. print (var)          #输出1  没错就是1!  原因:fun2(中的var只是局部变量,不改变全局var值)
  15. print (fun3(var))    #输出2  传递进来的var = 1,return的是局部var = 2 ,没错,再打印全局var还是1
  16. print (var)          #输出1  不想解释了
复制代码


#已贴出截图

题目

题目
答案.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-6-1 18:45:32 | 显示全部楼层    本楼为最佳答案   
#看懂我这个,你就明白了
  1. var = 0

  2. def fun1():
  3.     global var
  4.     var += 1
  5.     return var

  6. def fun2(var):
  7.     var += 1
  8.     return var

  9. def fun3(var):
  10.     var += 1
  11.     return var

  12. print (fun1())       #输出1  执行后全局变量var = 1
  13. print (fun2(var))    #输出2  执行后局部同名var = 2,但全局变量var = 1 不信看下一条print()语句
  14. print (var)          #输出1  没错就是1!  原因:fun2(中的var只是局部变量,不改变全局var值)
  15. print (fun3(var))    #输出2  传递进来的var = 1,return的是局部var = 2 ,没错,再打印全局var还是1
  16. print (var)          #输出1  不想解释了
复制代码


#已贴出截图
U479%I$RWTPPR{I4E~7F6ZM.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-1 21:32:32 | 显示全部楼层
fun3里也需要使用global修饰,或者保证参数与全局变量不同名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-6-2 12:04:23 | 显示全部楼层
Looker 发表于 2016-6-1 18:45
#看懂我这个,你就明白了

谢谢回答,看懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-2 12:04:57 | 显示全部楼层
码农青菜 发表于 2016-6-1 21:32
fun3里也需要使用global修饰,或者保证参数与全局变量不同名

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

使用道具 举报

发表于 2016-6-4 18:00:29 | 显示全部楼层
fun3里也需要使用global修饰,或者保证参数与全局变量不同名
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-4 22:10:40 | 显示全部楼层
因为先调用的fun3,然后调用fun2,最后调用的fun1,

fun3是在fun2里被调用的,而fun2是在fun1被调用的,一层一层要分清
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-5 14:43:30 | 显示全部楼层
Rand0m 发表于 2016-6-4 22:10
因为先调用的fun3,然后调用fun2,最后调用的fun1,

fun3是在fun2里被调用的,而fun2是在fun1被调用的, ...

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

使用道具 举报

发表于 2016-6-7 08:50:21 | 显示全部楼层
学习学习了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-21 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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