pejayang 发表于 2020-8-21 15:29:04

不明白19课第4题

第四题的代码是
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 和 小甲鱼 呢?

heidern0612 发表于 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影响。

Twilight6 发表于 2020-8-21 15:39:52




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

学习型motor 发表于 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 ’
页: [1]
查看完整版本: 不明白19课第4题