python:这个函数运行过程是怎样的?谢谢!
本帖最后由 大珠提子 于 2020-3-11 20:06 编辑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())
1.global var改全局变量,是同时改了fun2和fun3中的var吗?
2.fun2里面调用了fun3,为啥var的值没有被改为"小甲鱼"?是因为fun1里面把var变成全局变量,所以fun3里面的赋值失去意义了吗?
3.要是前俩我说的不对,求一下这个函数运行过程,这个我答案逆推还是不敢确定。 1,第一个没有听懂
2,var = ' Hi '
def fun1():
global var
var = ' Baby '
print(var)
return fun2(var)
def fun2(var):
var += 'I love you'
fun3(var)
return var
def fun3(var):
var = ' 小甲鱼 '
print(var)
print(fun1())
到头来你可以发现,最后修改并返回的只有局部变量
3,你自己一行一行分析就行 def3没有return值 whiteness 发表于 2020-3-11 21:25
def3没有return值
加上return var输出结果没有改变 qiuyouzhi 发表于 2020-3-11 19:25
1,第一个没有听懂
2,
到头来你可以发现,最后修改并返回的只有局部变量
谢谢,想了好久没理解为什么print(var)打印出hi,fun1里面不是用global把var转成全局变量了嘛,为啥不是baby{:5_96:} 大珠提子 发表于 2020-3-11 23:11
谢谢,想了好久没理解为什么print(var)打印出hi,fun1里面不是用global把var转成全局变量了嘛,为啥不是b ...
你打印出的是hi? 大珠提子 发表于 2020-3-11 23:11
谢谢,想了好久没理解为什么print(var)打印出hi,fun1里面不是用global把var转成全局变量了嘛,为啥不是b ...
因为你在函数里对var的操作是赋值,这时候Python默认认为这是局部变量
所以说是局部变量跟全局变量的问题?
页:
[1]