鱼C论坛

 找回密码
 立即注册
查看: 1067|回复: 3

[已解决]不明白19课第4题

[复制链接]
发表于 2020-8-21 15:29:04 | 显示全部楼层 |阅读模式

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

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

x
第四题的代码是
var = ' Hi '

def fun1():
    global var
    var = ' Baby '
    return fun2(var)

def fun2(var):
    var += 'I love you'
    fun3(var)
    return var

def fun3(var):
    var = ' 小甲鱼 '

print(fun1())

为什么结果不显示Hi 和 小甲鱼 呢?
最佳答案
2020-8-21 15:39:52



看看这个帖子,解析整个题目能不能有助于你的理解:https://fishc.com.cn/forum.php?m ... 453&pid=4848159

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-21 15:36:35 | 显示全部楼层
fun1的返回值是调用fun2,并且var的全局global了下,覆盖掉全局的hi,var值为Baby。

fun2的var从哪来,先找局部,局部没有,找全局,全局有个叫hi,所以fun2的返回值为 Baby, i love you.

所以最终结果为 baby, i love you 。

至于fun3,里的var为局部变量,不影响全局,也没调用。所以不受fun3影响。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-21 15:39:52 | 显示全部楼层    本楼为最佳答案   



看看这个帖子,解析整个题目能不能有助于你的理解:https://fishc.com.cn/forum.php?m ... 453&pid=4848159

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-21 15:45:28 | 显示全部楼层
fun1()里因为是global var 所以可以修改全局变量 此时全局变量var = ‘ Baby ’, 调用fun2()是传入参数var = ‘ Baby ’ 进入fun2()后【var += 'I love you' 】这一句是修改fun2()里的局部变量var,此时fun2()里var为fun2()的局部变量var = ‘ Baby I love you ’ 然后因为fun3()里的var也是fun3()的局部变量,所以全局变量没有改变,也不会影响fun2()里的局部变量var,所以最后在fun2()里return的var是fun2()的局部变量var,即‘  Baby I love you ’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 08:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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