鱼C论坛

 找回密码
 立即注册
查看: 2036|回复: 3

[已解决]请问一下关于return返回值的问题

[复制链接]
发表于 2017-5-12 23:01:46 | 显示全部楼层 |阅读模式

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

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

x
本来以为懂了,后来被课后作业绕晕了,想请问一下
def fun(var):
    var = 1314
    print(var, end='')

var = 520
fun(var)
print(var)

这个函数的结果是1314520,请问为什么不是5201314呢

同理
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 而不是 i love you baby呢


谢谢谢谢
最佳答案
2017-5-12 23:35:39
本帖最后由 自然水 于 2017-5-12 23:42 编辑

第一个问题:

fun 函数中的 var 是“局部变量”,咱们用颜色区分:
var = 1314  只在函数fun内生效

函数外 的var =520 全局变量

因为先执行 fun(var) 即 fun(520):
执行过程:
打印 var  即 1314
print(var)就不用解释了了吧?

问题2:

fun1中 先声明了global var ,对 var 变量进行全局操作:

那么函数体外的 var = "Hi"  变成了 var ="Baby"

fun1 的返回值调用的是 fun2(var):

def fun2(var): # 请注意,这里的var就是调用全局的变量
    var += 'I love you'  这俩 var 分别对应了 “形参” “实参”
#函数体内的var不是全局变量var(虽然内容一样)
#函数体内的var不是全局变量var(虽然内容一样)
#函数体内的var不是全局变量var(虽然内容一样)
而是 “复制过来的镜像变量“ ,应该可以理解吧?

     var += 'I love you' 拼接一下 即 baby i love you

fun2虽然 调用了fun3(var),并在fun3中 对var 又重新赋值了一次,等于”老污龟“
#亲~注意颜色,和上面一样,var 是属于fun3的局部变量,和fun2内的没一毛钱关系。

由于只有fun1(它调用了fun2)  与 fun2  有返回值:所以 打印的是 fun2 里 var的最终结果,即 :var = baby i love you
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-5-12 23:35:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 自然水 于 2017-5-12 23:42 编辑

第一个问题:

fun 函数中的 var 是“局部变量”,咱们用颜色区分:
var = 1314  只在函数fun内生效

函数外 的var =520 全局变量

因为先执行 fun(var) 即 fun(520):
执行过程:
打印 var  即 1314
print(var)就不用解释了了吧?

问题2:

fun1中 先声明了global var ,对 var 变量进行全局操作:

那么函数体外的 var = "Hi"  变成了 var ="Baby"

fun1 的返回值调用的是 fun2(var):

def fun2(var): # 请注意,这里的var就是调用全局的变量
    var += 'I love you'  这俩 var 分别对应了 “形参” “实参”
#函数体内的var不是全局变量var(虽然内容一样)
#函数体内的var不是全局变量var(虽然内容一样)
#函数体内的var不是全局变量var(虽然内容一样)
而是 “复制过来的镜像变量“ ,应该可以理解吧?

     var += 'I love you' 拼接一下 即 baby i love you

fun2虽然 调用了fun3(var),并在fun3中 对var 又重新赋值了一次,等于”老污龟“
#亲~注意颜色,和上面一样,var 是属于fun3的局部变量,和fun2内的没一毛钱关系。

由于只有fun1(它调用了fun2)  与 fun2  有返回值:所以 打印的是 fun2 里 var的最终结果,即 :var = baby i love you

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
liaozhenghao + 5 + 5 + 3

查看全部评分

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

使用道具 举报

 楼主| 发表于 2017-5-14 10:48:26 | 显示全部楼层
自然水 发表于 2017-5-12 23:35
第一个问题:

fun 函数中的 var 是“局部变量”,咱们用颜色区分:

非常详细,完全明白了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 14:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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