鱼C论坛

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

[已解决]python 零基础19讲

[复制链接]
发表于 2017-7-11 23:05:06 | 显示全部楼层 |阅读模式

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

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

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

标红的global 有什么用呢?
最佳答案
2017-7-11 23:21:36
考察的是各种同名变量的作用域……

只要注意一点:全局变量的作用域是整个程序,局部变量的作用域是函数体内部,当全局变量和局部变量名称相同时,局部变量将临时覆盖全局变量的作用域。

global var 的作用是让 fun1 里面的 var 使用全局的 var(前面被赋值为 'Hi' 那个)

在 fun1 中我们把值从 'Hi' 修改为 'Baby',然后返回值是 fun2 的返回值

所以 fun1 要返回,需要先调用 fun2……

调用 fun2 传入的 var 是全局的那个 var

在 fun2 中,将全局的 var 赋值给同名参数 var,并追加 'I love you' 字符串

这里在 fun2 里面调用 fun3(var) 是一个幌子,因为 fun3 里面的 var 是属于 fun3 的参数,是局部变量,对外面的 var 造不成影响

所以 fun2 返回的 var 是 'Baby I love you'

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

使用道具 举报

 楼主| 发表于 2017-7-11 23:12:35 | 显示全部楼层
var = ' Hi '

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

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

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

print(fun1())


我把改成这样,就得到'小甲鱼了’

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

使用道具 举报

发表于 2017-7-11 23:17:12 | 显示全部楼层
2017-07-11_231542.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-11 23:21:36 | 显示全部楼层    本楼为最佳答案   
考察的是各种同名变量的作用域……

只要注意一点:全局变量的作用域是整个程序,局部变量的作用域是函数体内部,当全局变量和局部变量名称相同时,局部变量将临时覆盖全局变量的作用域。

global var 的作用是让 fun1 里面的 var 使用全局的 var(前面被赋值为 'Hi' 那个)

在 fun1 中我们把值从 'Hi' 修改为 'Baby',然后返回值是 fun2 的返回值

所以 fun1 要返回,需要先调用 fun2……

调用 fun2 传入的 var 是全局的那个 var

在 fun2 中,将全局的 var 赋值给同名参数 var,并追加 'I love you' 字符串

这里在 fun2 里面调用 fun3(var) 是一个幌子,因为 fun3 里面的 var 是属于 fun3 的参数,是局部变量,对外面的 var 造不成影响

所以 fun2 返回的 var 是 'Baby I love you'

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

使用道具 举报

发表于 2017-7-12 10:35:49 | 显示全部楼层
修改后,fun2()的返回值为fun3()的处理结果,不是fun2()函数计算后的var的值。不管fun2()的计算过程是什么,它都会返回‘小甲鱼’。而fun1()的返回值为fun2()的计算结果(‘小甲鱼’),所以执行后会得到小甲鱼。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 13:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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