19讲问题
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())
19讲这个问题(最后会打印什么?)没懂,以为是会打印小甲鱼。我猜我可能是不知道global var这里global的作用 10行 13 14行都是没用的代码
用来骗你的 global是用来修改全局变量的值,也就是开头hi已被修改 var = ' Hi ' #定义全局变量var
def fun1():
global var #定义函数内的var为全局变量
var = ' Baby ' #此时全局变量的值已修改为' Baby '
return fun2(var)#把全局变量(值为' Baby ')作为参数传入调用fun2()函数,并将执行结果返回,也就是返回 fun2(' Baby ') 的返回值,此时返回“Baby I love you”
def fun2(var): #参数' Baby '传入函数内的局部变量var
var += 'I love you' #执行后函数2内的局部变量值为“Baby I love you”,全局变量仍然为' Baby '
fun3(var) #返回fun3(“Baby I love you”)的执行结果,返回了None
return var #此时函数返回“Baby I love you”,也就是fun2(' Baby ')
返回“Baby I love you”
def fun3(var): #参数“Baby I love you”传入函数内的局部变量var
var = ' 小甲鱼 ' #执行后函数3内局部变量值为' 小甲鱼 ',全局变量仍然为' Baby '
#这个程序没有返回值,也就是返回None,不信可以看后面的运行结果
print(fun1()) #打印fun1()函数的返回值,返回的是“Baby I love you”,全局变量仍然为Baby
查看执行结果并验证分析是否正确:
>>> print(fun3("Baby I love you"))
None
>>> print(fun2("Baby"))
BabyI love you
>>> var
' Baby ' 笨鸟学飞 发表于 2020-10-15 23:25
var = ' Hi ' #定义全局变量var
def fun1():
太感谢了!菜鸟幸得前辈指点! Arcticfoxer 发表于 2020-10-16 18:28
太感谢了!菜鸟幸得前辈指点!
我也才刚学个把星期,0基础新入门,看代码仔细点分析清楚就行了
碰到这种有迷惑的,你其实把函数内的局部变量var改为x或其他
有定义为全局变量的不改,让自己更好的理解 笨鸟学飞 发表于 2020-10-16 23:07
我也才刚学个把星期,0基础新入门,看代码仔细点分析清楚就行了
碰到这种有迷惑的,你其实把函数内的局 ...
这个办法好,同名的局部变量和全局变量确实有迷惑性不太好理解
页:
[1]