global函数是将变量设置为全局变量,使其能在函数里面访问并使用;
但是在这段代码里(就是你所指的原代码)
- 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())
复制代码
他将var变量设置为全局变量后,fun1()函数里面又将var重新赋值了,赋值内容为' Baby '
然后接着往下走,return fun2(var),这里将var的值,也就是'Baby'传到了fun2()函数里面
然后执行var += 'I love you',到这里的时候var的值为' Baby I love you',然后fun3(var),
又将'Baby I love you'传到了fun3()函数里面,但是因为fun3()函数没有进行return,所以
可以不用理他,所以最后返回的值为' Baby I love you'
但是你修改的代码,在fun3()函数里面加上了return var,这里因为是作用域的原因,你
在fun3()函数里面加一句print(var),你可以发现他输出的结果是'小甲鱼'的