鱼C论坛

 找回密码
 立即注册
查看: 1395|回复: 5

[已解决]请教一下,这个小程序的结果打印出来为什么是这个。

[复制链接]
发表于 2018-3-1 17:16:02 | 显示全部楼层 |阅读模式

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

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

x
  1. var = ' Hi '

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

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

  10. def fun3(var):
  11.     var = ' 小甲鱼 '

  12. print(fun1())
复制代码


这个程序打印出来的结果是

  1. baby I love you
复制代码


可是我觉得应该是:小甲鱼
因为var是一个全局变量,在fun3()中,就把小甲鱼最后赋值给var了,然后在fun2()中返回的var也是fun3()中的值。。。

请大神指正,谢谢!
最佳答案
2018-3-1 17:22:18
fun3中的var是该函数的自定义的局部变量,无法在函数外面生效(除非return)

fun1中的var被声明了同全局变量var,所以可以当作全局变量对待

fun2中没有自定义var变量,只调用传递进来的var,而且返回给了fun1,fun1也将它返回了,所以最终起作用了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-1 17:22:18 | 显示全部楼层    本楼为最佳答案   
fun3中的var是该函数的自定义的局部变量,无法在函数外面生效(除非return)

fun1中的var被声明了同全局变量var,所以可以当作全局变量对待

fun2中没有自定义var变量,只调用传递进来的var,而且返回给了fun1,fun1也将它返回了,所以最终起作用了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-2 11:28:03 | 显示全部楼层
BngThea 发表于 2018-3-1 17:22
fun3中的var是该函数的自定义的局部变量,无法在函数外面生效(除非return)

fun1中的var被声明了同全局 ...

明白了,return相当于是函数外部与内部的桥梁,只有当return了,函数里的全局变量才能跑到函数外面生效。
谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-2 11:56:15 | 显示全部楼层
BngThea 发表于 2018-3-1 17:22
fun3中的var是该函数的自定义的局部变量,无法在函数外面生效(除非return)

fun1中的var被声明了同全局 ...

你好,再请教一下:如果fun3中没有return的话,是不能把值传递给fun2的,对吗?
所以对于fun2里调用fun3(var)时,fun3(var)传递的是None。是这么理解的嘛?
谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 18:56:43 From FishC Mobile | 显示全部楼层
牛肉包儿 发表于 2018-3-2 11:56
你好,再请教一下:如果fun3中没有return的话,是不能把值传递给fun2的,对吗?
所以对于fun2里调用fun3 ...

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

使用道具 举报

 楼主| 发表于 2018-3-3 16:57:13 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-9 03:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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