不明白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 和 小甲鱼 呢? fun1的返回值是调用fun2,并且var的全局global了下,覆盖掉全局的hi,var值为Baby。
fun2的var从哪来,先找局部,局部没有,找全局,全局有个叫hi,所以fun2的返回值为 Baby, i love you.
所以最终结果为 baby, i love you 。
至于fun3,里的var为局部变量,不影响全局,也没调用。所以不受fun3影响。
看看这个帖子,解析整个题目能不能有助于你的理解:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=175453&pid=4848159
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]