鱼C论坛

 找回密码
 立即注册
查看: 1225|回复: 2

[已解决]19讲

[复制链接]
发表于 2020-9-12 09:35:09 | 显示全部楼层 |阅读模式

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

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

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


小甲鱼老师的这个答案求大神给个注释,有点看不太明白,谢谢
最佳答案
2020-9-12 10:18:01
本帖最后由 jackz007 于 2020-9-12 10:54 编辑

       在 fun1()、fun2()、fun3() 三个函数中,只有在 fun1() 中,var 被声明为全局变量,所以,在 fun1() 中对 var 的修改始终得到保持;在 fun2()、fun3() 中,var 只是一个局部变量,其生命周期仅限于本函数内部,就是说,var 在函数执行期间会存在,退出函数后,会被直接丢弃,不会再有任何办法被访问到。
var = ' Hi '            # 声明全局变量 var,并通过赋值确定了 var 为字符串型变量,其初始值为 'Hi'

def fun1():
    global var          # 声明 var 为全局变量,就是说,本函数(fun1())中用到的变量 var 与出现在函数外部的 var 是同一个变量, var = 'Hi'
    var = ' Baby '      # 把全局变量 var 的值由 'Hi' 改为 ' Baby '
    return fun2(var)    # 以 ' Baby ' 为参数,调用 fun2(),并将对 fun2() 的调用结果作为本函数的调用结果进行反馈

def fun2(var):          # var 是形参,在本函数(fun2())内,var 只是一个局部变量,与全局变量 var 毫无关系
    var += 'I love you' # 为局部变量 var 赋值 var = ' Baby ' + 'I love you'
    fun3(var)           # 以字符串 ' Baby I love you' 为参数,调用 fun3()
    return var          # 反馈局部变量 var 的值 ' Baby I love you'。注意,根据 fun1() 的函数定义,这个结果同时也是函数 fun1() 的最终反馈结果。

def fun3(var):          # var 是形参,在本函数(fun3())内,var 只是一个局部变量,与全局变量 var 毫无关系
    var = ' 小甲鱼 '    # 为局部变量 var 赋值,将其值由 ' Baby I love you' 改为 ' 小甲鱼 ',此修改同样与同名全局变量无关。

print(fun1())           # 打印对函数 fun1() 的调用结果 ' Baby I love you'
                        # 全局变量 var 的值为 ' Baby ',这是因为只有在 fun1() 中, var 才是全局变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-12 10:18:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-9-12 10:54 编辑

       在 fun1()、fun2()、fun3() 三个函数中,只有在 fun1() 中,var 被声明为全局变量,所以,在 fun1() 中对 var 的修改始终得到保持;在 fun2()、fun3() 中,var 只是一个局部变量,其生命周期仅限于本函数内部,就是说,var 在函数执行期间会存在,退出函数后,会被直接丢弃,不会再有任何办法被访问到。
var = ' Hi '            # 声明全局变量 var,并通过赋值确定了 var 为字符串型变量,其初始值为 'Hi'

def fun1():
    global var          # 声明 var 为全局变量,就是说,本函数(fun1())中用到的变量 var 与出现在函数外部的 var 是同一个变量, var = 'Hi'
    var = ' Baby '      # 把全局变量 var 的值由 'Hi' 改为 ' Baby '
    return fun2(var)    # 以 ' Baby ' 为参数,调用 fun2(),并将对 fun2() 的调用结果作为本函数的调用结果进行反馈

def fun2(var):          # var 是形参,在本函数(fun2())内,var 只是一个局部变量,与全局变量 var 毫无关系
    var += 'I love you' # 为局部变量 var 赋值 var = ' Baby ' + 'I love you'
    fun3(var)           # 以字符串 ' Baby I love you' 为参数,调用 fun3()
    return var          # 反馈局部变量 var 的值 ' Baby I love you'。注意,根据 fun1() 的函数定义,这个结果同时也是函数 fun1() 的最终反馈结果。

def fun3(var):          # var 是形参,在本函数(fun3())内,var 只是一个局部变量,与全局变量 var 毫无关系
    var = ' 小甲鱼 '    # 为局部变量 var 赋值,将其值由 ' Baby I love you' 改为 ' 小甲鱼 ',此修改同样与同名全局变量无关。

print(fun1())           # 打印对函数 fun1() 的调用结果 ' Baby I love you'
                        # 全局变量 var 的值为 ' Baby ',这是因为只有在 fun1() 中, var 才是全局变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-12 12:14:16 | 显示全部楼层
jackz007 发表于 2020-9-12 10:18
在 fun1()、fun2()、fun3() 三个函数中,只有在 fun1() 中,var 被声明为全局变量,所以,在 fun1() ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 17:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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