函数求助
def fun1():global var
var='baby'
return fun2(var)
>>> def fun2(var):
var+='i love you'
fun3(var)
return fun3(var)
>>> def fun3(var):
var='小甲鱼'
>>> print(fun1())
None
初学菜鸟求助,这里的global已经定义var为全局变量 fun2的尾巴return回fun3 为啥最后输出的不是fun3里面的小甲鱼呢?var不是已经为全局变量了嘛? def fun1():
global var
var='baby'
return fun2(var)
def fun2(var):
var+='i love you'
fun3(var)
return fun3(var)
def fun3(var):
var='小甲鱼'
return var
print(fun1())
print(var) 本帖最后由 jackz007 于 2021-9-24 18:03 编辑
var 只是在 fun1() 中声明了全局变量,因此,只是在 fun1() 中 var 是可以赋值的全局变量。在其它函数中,均未使用 global 关键字进行声明,而且,都用等号为其赋过值,所以,这些 var 就是不折不扣的局部变量。
def fun3(var):
var = '小甲鱼'# var 是 fun3() 的形式参数,属于局部变量,而非全局变量
def fun3():
global var # 全局变量在使用前必须先进行声明,否则,不可以用等号为其赋值
var = '小甲鱼'# 这样用 var 才是全局变量
fun1() 要返回对 fun2() 的调用结果,而 fun2() 又要返回对 fun3() 的调用结果,就是说,fun3() 的返回值同时也是 fun2() 及 fun1() 的返回值,可想而知,如果 fun3() 没有返回值,那么,fun2() 和 fun1() 也会没有返回值。
由于在本例中,fun3() 没有返回值,所以,直接导致这条语句
print(fun1())
的输出结果是 None 。解决方法自然是在 fun3() 结束的位置添加一个 return 语句,然后,再加上需要返回的变量或字符串。 fun1的返回结果是 fun2 的 return ,fun2 的 return 是 fun3 的 return,而 fun3 没有 return,所以返回结果为空。
善用论坛的搜索功能,这里蛮详细的~:
【已解决】 [第019讲:函数:我的地盘听我的 | 课后测试题及答案]
https://fishc.com.cn/thread-175453-1-1.html
(出处: 鱼C论坛)
Twilight6 发表于 2021-9-24 22:31
善用论坛的搜索功能,这里蛮详细的~:
【已解决】 [第019讲:函数:我的地盘听我的 | 课后测试题及 ...
感谢大佬!说的很清楚 感谢
页:
[1]