左右看 发表于 2023-3-19 20:34:58

小白入坑求解


《零基础入门学习Python》第19讲

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
函数def fun3中的“小甲鱼”为什么没有打印呢?

isdkz 发表于 2023-3-19 21:05:07

代码执行过程如下:

调用 fun1() 函数。
在 fun1() 函数中,将全局变量 var 修改为 ' Baby '。
调用 fun2(var) 函数,传递参数 ' Baby '。
在 fun2() 函数中,将局部变量 var 修改为 ' Baby I love you'。
调用 fun3(var) 函数,传递参数 ' Baby I love you'。
在 fun3() 函数中,将局部变量 var 修改为 ' 小甲鱼 '。注意,这里的 var 是 fun3() 函数的局部变量,不会影响到 fun2() 函数中的 var。
fun3() 函数没有返回值,所以不会影响到 fun2() 函数的返回值。
fun2() 函数返回 ' Baby I love you'。
fun1() 函数将结果打印出来,所以输出结果是:' Baby I love you'。
关于为什么 "小甲鱼" 没有打印,原因如下:

fun3() 函数没有包含任何打印语句,所以它不会直接打印任何内容。此外,fun3() 函数修改的是它自己的局部变量 var,而不是全局变量或其他函数中的变量。因此,它对其他函数的执行和返回值没有影响,所以 "小甲鱼" 没有在最终结果中出现。

ouyunfu 发表于 2023-3-20 08:56:56

在这个代码中,变量 var 是一个全局变量,因为在 fun1 中使用了 global var 语句,所以在 fun2 和 fun3 中也可以访问到它。当 fun1 被调用时,它会修改全局变量 var 的值为 ' Baby ',然后将这个值作为参数传递给 fun2。fun2 接收到参数后,会将它修改为 ' Baby I love you',然后调用 fun3 并将修改后的参数传递给它。fun3 中的语句 var = ' 小甲鱼 ' 只是将函数内部的局部变量 var 的值修改为 ' 小甲鱼 ',并不会影响全局变量 var 的值,所以 fun3 中的语句并不会影响程序的输出结果。

IamLiber 发表于 2023-4-13 00:39:12

fun3中没有返回小甲鱼
页: [1]
查看完整版本: 小白入坑求解