鱼C论坛

 找回密码
 立即注册
查看: 1849|回复: 6

[已解决]19讲问题

[复制链接]
发表于 2020-10-15 17:31:33 | 显示全部楼层 |阅读模式

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

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

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


19讲这个问题(最后会打印什么?)没懂,以为是会打印小甲鱼。我猜我可能是不知道global var这里global的作用
最佳答案
2020-10-15 23:25:49
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 '
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-15 17:44:32 From FishC Mobile | 显示全部楼层
10行   13   14行  都是没用的代码
用来骗你的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-15 18:07:05 | 显示全部楼层
global是用来修改全局变量的值,也就是开头hi已被修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-15 23:25:49 | 显示全部楼层    本楼为最佳答案   
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 '
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2020-10-16 18:28:26 | 显示全部楼层
笨鸟学飞 发表于 2020-10-15 23:25
var = ' Hi '          #定义全局变量var

def fun1():

太感谢了!菜鸟幸得前辈指点!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-16 23:07:20 | 显示全部楼层
Arcticfoxer 发表于 2020-10-16 18:28
太感谢了!菜鸟幸得前辈指点!

我也才刚学个把星期,0基础新入门,看代码仔细点分析清楚就行了
碰到这种有迷惑的,你其实把函数内的局部变量var改为x或其他
有定义为全局变量的不改,让自己更好的理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-10-17 10:15:12 | 显示全部楼层
笨鸟学飞 发表于 2020-10-16 23:07
我也才刚学个把星期,0基础新入门,看代码仔细点分析清楚就行了
碰到这种有迷惑的,你其实把函数内的局 ...

这个办法好,同名的局部变量和全局变量确实有迷惑性不太好理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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