本帖最后由 阿奇_o 于 2020-11-1 20:42 编辑
函数调用,时刻都得想着输入什么,输出什么(即返回什么)。
这里:print(fun1()),打印的是fun1()的结果(即fun1()的输出),而fun1()返回的是fun2(var)。
但fun3()在这里没有返回值(或叫返回None),var也不是全局变量(因为fun1中已定义一个同名的全局变量),
所以,var=‘小甲鱼’,这个只属于fun3的局部变量,谁有没法调用,除了fun3它本身。
换句话,就是说fun3(var)这一句,只是fun3它自己处理了它内部的var,而不是全局的var。(理解"全局”≠全部,而是 “访问权限”)
要想最后输出:小甲鱼I love you
可以让fun3返回return var,并在fun2中提前一步赋值,即var=fun3(var) ...
代码:
- var = 'Hi'
- def fun1():
- global var
- var = 'Baby '
- return fun2(var)
- def fun2(var):
- # var = fun3(var) #去掉注释即可大声说出:小甲鱼I love you.
- var += 'I love you.'
- fun3(var)
- print(fun3(var))
- return var
- def fun3(var):
- var = '小甲鱼'
- return var #试着注释这行,看看会怎样
- print(fun3(var))
- print(fun1())
复制代码