函数课后题疑问求助
var = ' Hi 'def fun1():
global var
var = ' Baby '
return fun2(var)
def fun2(var):
var += 'I love you'
def fun3(var):
v = ' 小甲鱼 '
return v
fun3(var)
return var
print(fun1())
最后打印出来‘Baby I love you’,硬是没能理解,哪位大神指导一下{:10_266:}
在定义fun1的时候,global 的作用范围是只在fun1中声明,还是后边的fun2和fun3也同样受影响?
感谢! fun2 受影响是因为传参传过去的
fun3 就是搞笑的 可以忽略 你需要明白的一点。函数接受到什么参数,发回到了什参数。
print(fun1())运行fun1函数,没有传递参数
fun1()函数,返回了一个fun2(var)函数,也就是返回了,fun2函数返回的结果。
global 的作用范围是只在fun1中声明,可以改变fun1里面的var。但是同时这个改变后的var也会传递到fun2函数里面
fun2函数里面对var进行修改,运行一下fun3函数,最终返回的是var,而不是fun3运行结果。
最终fun2返回的var会被打印出来
var = ' Hi '
def fun1():
global var#定义了全局变量
var = ' Baby ' #重新赋值var,这时候var就不是'Hi'了
return fun2(var) #这里相当于调用函数fun2(var='Baby')
def fun2(var): #fun2(var='Baby')
var += 'I love you' #由于fun2()函数里没有通过全局变量var,所以这里的var是fun2()的局部变量,但‘Baby’是上面传的参数。
#这时,fun2()局部变量var=‘Baby I love you’
def fun3(var): #fun3(var=‘Baby I love you’,)
v = ' 小甲鱼 ' #fun3()虽调用了,但是fun3()函数对fun2()的局部变量var没任何操作。
return v #返回的也和var没点关系
fun3(var) #上面说了
return var #所以这里返回的是fun2()的局部变量var
print(fun1())
#如果你在这里打印下var,可以看到var = 'Baby'
print(var)
给你提个简单方法,你在关键位置插入个print(var)查看下var在这个变量在函数某个位置时的状态。
如果你用的pycharm你可以用调试看,这就更方便了。 var = ' Hi '
def fun1():
global var
var = ' Baby '
return fun2(var)
def fun2(var):
var += 'I love you'
def fun3(var):
var = ' 小甲鱼 '
return var
fun3(var)
print(var)
print(fun1())
为什么这个执行后会打印出:
Baby I love you
None
这个None是怎么出来的?
非凡 发表于 2021-12-30 16:41
给你提个简单方法,你在关键位置插入个print(var)查看下var在这个变量在函数某个位置时的状态。
如果 ...
var = ' Hi '
def fun1():
global var
var = ' Baby '
return fun2(var)
def fun2(var):
var += 'I love you'
def fun3(var):
var = ' 小甲鱼 '
return var
fun3(var)
print(var)
print(fun1())
为什么这个执行后会打印出:
Baby I love you
None
这个None是怎么出来的? 迪哥,是你吗? 发表于 2021-12-31 10:39
为什么这个执行后会打印出:
Baby I love you
None
var = ' Hi '
def fun1():
global var
var = ' Baby '
return fun2(var)
def fun2(var):
var += 'I love you'
def fun3(var):
var = ' 小甲鱼 '
return var
fun3(var)
print(var)
print(fun1()) #None是你这一行代码带出来的,因为你fun1()函数return fun2(),而fun2()没有return任何东西,所以fun190最后返回的是个空值
你可以在后面试下a = fun1(var),然后在print(a)
或者你在你代码第13行下面插一return 1#注意缩进,然后再执行a = fun1(var),看下a 的值 明白了,谢谢!{:10_279:}
页:
[1]