global var这行删掉会怎么样?
本帖最后由 帅滴不要不要滴 于 2020-2-26 23:55 编辑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 var这行删掉会怎么样?
跑了一遍的结果没变啊,声明全局变量的意义何在?
或者说:如果不声明global var,def fun2(var):中的var调用的是‘Hi’还是‘Baby’?
大佬帮忙看看{:5_108:} 如果不声明global var, 运行完后,var=‘Hi’, 在fun1()声明后var="Baby" ouyunfu 发表于 2020-2-27 00:21
如果不声明global var, 运行完后,var=‘Hi’, 在fun1()声明后var="Baby"
不声明,fun2(var) 依旧调用的还是baby,这是我不懂的地方{:5_100:}麻烦大佬详细说一下 帅滴不要不要滴 发表于 2020-2-27 00:46
不声明,fun2(var) 依旧调用的还是baby,这是我不懂的地方麻烦大佬详细说一下
这是局部变量的内部调用,所以还是baby.
你如果直接print(fun2(var)),因为在var 在=前面,所以调用的是全局变量,显示的是Hi, I love you 本帖最后由 vallenshao 于 2020-2-27 01:42 编辑
global的意义不是说不能被修改。
在fun1的里面,global var,此时var已经国际化了,但是不代表不能被修改。
下一行,var ='baby',也就是说你把这个全局var赋值成了Baby,此时在函数里面和外面,var就会等于Baby了。
可以这样理解
var = 'Hi'
def fun1():
global var #此时fun1没有输入任何参数,但是外部var的值已经传入进来了,而且var已经不仅仅属于这个函数,而是属于整个范围。
var = 'baby' #此时var按照上面这样,已经属于这个范围,而且值是'baby'
为了更好帮助i理解,我给你看一下区别。
def fun2():
global var
var = '111'
fun2()
print(var) #此时能打印出var出来,哪怕在函数外面也能打印函数里面,如果不是global var,在函数外面print(var)就会报错。
如果你想打印 Hi I love you,只需要把你代码作如下修改
var = ' Hi '
def fun1():
global var
var = ' Baby ' #把这行删掉就可以了,也就是var我不赋值,我把外面的hi直接带进来
return fun2(var)
def fun2(var):
var += 'I love you'
fun3(var)
return var
def fun3(var):
var = ' 小甲鱼 '
print(fun1())
vallenshao 发表于 2020-2-27 01:37
global的意义不是说不能被修改。
在fun1的里面,global var,此时var已经国际化了,但是不代表不能被修改 ...
原代码中将global var 删掉,打印出的结果还是不变的,也就是说即使没有声明global,fun2(var)中调用的还是‘Baby’,我不懂的在这里,已经没有声明global了,为啥fun2(var)中的var还用fun1里面的var=‘Baby’,而不是用最前的全局变量var=‘Hi’ 麻烦大佬解答一下{:5_99:} 帅滴不要不要滴 发表于 2020-2-27 12:23
原代码中将global var 删掉,打印出的结果还是不变的,也就是说即使没有声明global,fun2(var)中调用的还 ...
以为你fun1中有一个return(var)。
return 在fun1里面,此时return('Baby’) 帅滴不要不要滴 发表于 2020-2-27 12:23
原代码中将global var 删掉,打印出的结果还是不变的,也就是说即使没有声明global,fun2(var)中调用的还 ...
因为fun1()里面的 var=‘Baby’,var 是和全局变量var = 'HI',同名的另一个局部变量。小甲鱼在视频里说了的。 这个为啥不实行fun3(var)这个 函数啊,不是应该返返回 “小甲鱼”吗
页:
[1]