鱼C论坛

 找回密码
 立即注册
查看: 551|回复: 4

[已解决]全局变量问题

[复制链接]
发表于 2020-4-11 15:21:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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())

请问上面课后题,为何打印出来Baby I love you?

因为fun1里面第一行global了var,fun2里面第一行把var 变成了 Baby I love you这个能理解
但是第三行调用了fun3(var),不是应该又把var改成小甲鱼了吗?那么最后一行return回来应该是小甲鱼啊,那么fun1最后return不也应该是小甲鱼吗?

谢谢!
最佳答案
2020-4-11 15:45:39
你好,在fun3(var)里面的var是局部变量,出了fun3就没有了,fun1是把var转成了baby,fun2在此基础上加上了i love you ,在fun2里面调用的fun3只是在它自己的函数里面创造了一个局部变量不改变函数之外的全局变量,但是总体的输出还是在fun2,因此是输出fun2的var局部变量:baby i love you
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-11 15:42:55 | 显示全部楼层
你的def fun3(var): 并没有 return
然后因为没有声明 global 全局 , 所以 var = ' 小甲鱼 ' 的赋值只是在 def fun3(var): 内操作,
所以不会影响到其他地方
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 15:45:39 | 显示全部楼层    本楼为最佳答案   
你好,在fun3(var)里面的var是局部变量,出了fun3就没有了,fun1是把var转成了baby,fun2在此基础上加上了i love you ,在fun2里面调用的fun3只是在它自己的函数里面创造了一个局部变量不改变函数之外的全局变量,但是总体的输出还是在fun2,因此是输出fun2的var局部变量:baby i love you
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-11 15:55:44 | 显示全部楼层
aleiluyes 发表于 2020-4-11 15:42
你的def fun3(var): 并没有 return
然后因为没有声明 global 全局 , 所以 var = ' 小甲鱼 ' 的赋值只是在  ...

fun3里面加了return var的话,发现也没用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-11 16:04:26 | 显示全部楼层
var = ' Hi '

def fun1():
    global var
    var = ' Baby '
    print(var)
    return fun2(var)

def fun2(var):
    var += 'I love you'
    print(var)
    fun3(var)
    print(var)
    print(fun3(var))
    return var

def fun3(var):  
    var = ' 小甲鱼 '
    return var


print(fun1(),'\n')
print(fun2(var),'\n')
print(fun3(var))

在不同位置插入打印,基本上搞明白了,谢谢各位!

程序结果:

Baby
Baby I love you
Baby I love you
小甲鱼
Baby I love you

Baby I love you
Baby I love you
小甲鱼
Baby I love you

小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 08:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表