鱼C论坛

 找回密码
 立即注册
查看: 2444|回复: 7

[已解决]python:这个函数运行过程是怎样的?谢谢!

[复制链接]
发表于 2020-3-11 19:18:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 大珠提子 于 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.要是前俩我说的不对,求一下这个函数运行过程,这个我答案逆推还是不敢确定。
最佳答案
2020-3-11 19:25:13
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,你自己一行一行分析就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-11 19:25:13 | 显示全部楼层    本楼为最佳答案   
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,你自己一行一行分析就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-11 21:25:53 | 显示全部楼层
def3没有return值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 22:18:10 | 显示全部楼层

加上return var输出结果没有改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-11 23:11:34 | 显示全部楼层
qiuyouzhi 发表于 2020-3-11 19:25
1,第一个没有听懂
2,
到头来你可以发现,最后修改并返回的只有局部变量

谢谢,想了好久没理解为什么print(var)打印出hi,fun1里面不是用global把var转成全局变量了嘛,为啥不是baby
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 08:07:48 From FishC Mobile | 显示全部楼层
大珠提子 发表于 2020-3-11 23:11
谢谢,想了好久没理解为什么print(var)打印出hi,fun1里面不是用global把var转成全局变量了嘛,为啥不是b ...

你打印出的是hi?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 08:11:13 | 显示全部楼层
大珠提子 发表于 2020-3-11 23:11
谢谢,想了好久没理解为什么print(var)打印出hi,fun1里面不是用global把var转成全局变量了嘛,为啥不是b ...

因为你在函数里对var的操作是赋值,这时候Python默认认为这是局部变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 12:19:07 | 显示全部楼层
所以说是局部变量跟全局变量的问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-27 08:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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