|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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首先是全局变量‘Hi’,当调用函数fun1()的时候,fun1中申明了var同名的全局变量,并且赋值为‘Baby’,函数fun1返回fun2(var);可以看到var = ‘Baby’传入到函数fun2中,var变成了 ‘Baby I love you’,又将此时的var作为实参传入到fun3()中,此时var在函数3中变成了‘小甲鱼’,函数fun3()没有None,此次操作之后fun2继续下一步,返回var即返回‘Baby I love you’给函数fun1(),此时print函数输出‘Baby I love you’,不是我认为的‘小甲鱼’。试着改了很多,但是还是对函数的作用域有点迷茫,希望鱼油们不要吝惜自己的十姑娘,借我你的讲解。
如果给函数fun3()加一个返回
>>> def fun3(var):
var = ' 小甲鱼 '
return var
print函数执行的结果还是之前的结果。并不是我认为的小甲鱼 |
|