python 一道题不理解
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())
为什么输出的是Baby I love you 啊
又是一道问过10000次的问题
因为global了var,且return 了fun2(return fun2就能让fun2也享有global var的特权)
只有fun3没有,他只是被单纯的调用了 https://fishc.com.cn/forum.php?mod=viewthread&tid=157114&page=1#pid4379822 按照思路来:
print(fun1())调用了fun1()
fun1中,由于global var,var = 'Baby',相当于外面的这个var = ‘Hi’也被改为了函数中的var。
fun1的返回值为:return fun2(var),即将var作为参数传给函数fun2,并将返回fun2的结果给fun1,所以要调用fun2
fun2的var参数为‘Baby’,然后因为 var += 'I love you'。因为没有设置global,fun2的var = ‘Baby I love you’只适用于fun2中,所以fun2下面的return var的结果就是‘Baby I love you’(意思是fun2(var)的调用结果就是这句话)
然后print(fun1())就是打印fun1的返回值,即fun2(var)
这里要注意的是,此时哪怕在函数体外,var的值已经变成了‘Baby’了
页:
[1]