鱼C论坛

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

[已解决]关于def中函数全局变量使用

[复制链接]
发表于 2019-3-3 09:46:04 | 显示全部楼层 |阅读模式

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

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

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

Baby I love you

如上:打印结果为Baby I love you。为什么不是输出' 小甲鱼 ',
我的想法如下:
def fun1():
    global var
    var = ' Baby '
    return fun2(var)      此时等于return fun2(Baby)

def fun2(var):
    var += 'I love you'   此时var=‘Baby I love you’,fun3(‘Baby I love you’)
    fun3(var)                后面fun3中,var = ' 小甲鱼 '
    return var               最后输出不应该是等于' 小甲鱼 ' 吗

def fun3(var):
    var = ' 小甲鱼 '   
最佳答案
2019-3-3 10:36:20
var = ' Hi '

def fun1():
     global var          #1、此时 var = 'hi'
     var = ' Baby '    # 2、此时 var = 'baby'

     return fun2(var) # 3、先进fuin2 , 9、返回  'baby I love you'


def fun2(a):
     a+= 'I love you' # 4、此时 a = 'baby I love you'

     fun3(a)  # 5、 进 fun3
     return a # 8、返回 a = 'baby I love you'

def fun3(b):
     b = ' 小甲鱼 '  # 6、b = ' 小甲鱼 ' , 无返回值

print(fun1()) #10、打印  'baby I love you'

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

使用道具 举报

发表于 2019-3-3 10:36:20 | 显示全部楼层    本楼为最佳答案   
var = ' Hi '

def fun1():
     global var          #1、此时 var = 'hi'
     var = ' Baby '    # 2、此时 var = 'baby'

     return fun2(var) # 3、先进fuin2 , 9、返回  'baby I love you'


def fun2(a):
     a+= 'I love you' # 4、此时 a = 'baby I love you'

     fun3(a)  # 5、 进 fun3
     return a # 8、返回 a = 'baby I love you'

def fun3(b):
     b = ' 小甲鱼 '  # 6、b = ' 小甲鱼 ' , 无返回值

print(fun1()) #10、打印  'baby I love you'

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

使用道具 举报

发表于 2019-3-3 10:53:55 | 显示全部楼层
fun3中的var值是局部变量,不是全局变量的var值。

全局变量的var和fun3中局部变量的var名字虽然一样,但是就像苍井空跟自己家老婆似的。

一个是所有人的老婆,一个是自己的老婆。自己的私有的,所有人是公用的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-3 11:19:14 | 显示全部楼层
ba21 发表于 2019-3-3 10:36
var = ' Hi '

def fun1():

你好,假如是
def fun3(var):
    var = ' 小甲鱼 '   
    return var
最终输出结果为什么还是'baby I love you'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-3 11:30:52 | 显示全部楼层
Python小林 发表于 2019-3-3 11:19
你好,假如是
def fun3(var):
    var = ' 小甲鱼 '   

  fun3(a)  # 5、 进 fun3
你 return fun3(var) 了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-3 13:56:53 | 显示全部楼层
ba21 发表于 2019-3-3 11:30
fun3(a)  # 5、 进 fun3
你 return fun3(var) 了吗?

没有,只是将
def fun3(var):
    var = ' 小甲鱼 '   
变成
def fun3(var):
    var = ' 小甲鱼 '   
    return va
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-3 14:37:16 | 显示全部楼层
return var 也没用,在 fun2() 里,你return var 时 fun3(var) 相当于 '小甲鱼',并不是  var = '小甲鱼',所以是没有对 fun2() 里的 var 造成什么影响的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-3 14:41:13 | 显示全部楼层
Python小林 发表于 2019-3-3 13:56
没有,只是将
def fun3(var):
    var = ' 小甲鱼 '   

fun3(a)  # 5、 进 fun3
大哥你没 return fun3(var) 还不能懂?

fun3(a)   不等于 return fun3(var)   懂不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 09:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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