-1

我正在学习 Python 并使用 3.3 版本。

我发现了一个我无法理解的“返回”问题。

案例 1. OK 案例,当“return”按预期返回值时。

def switch(a,b):
    print ("inputed values:", "a is",a, ", b is",b)
    if b==0:
        print (a)
        return a
    elif b>a:
        switch(b,a)

print(switch(15,0))

执行时:

输入值:a 为 15,b 为 0

15

15

案例 2. 问题案例,当“return”返回“None”时,虽然“print”打印了值。

def switch(a,b):
    print ("inputed values:", "a is",a, ", b is",b)
    if b==0:
        print (a)
        return a
    elif b>a:
        switch(b,a)

print(switch(0,15))

执行时:

输入值:a 为 0,b 为 15

输入值:a 为 15,b 为 0

15

没有任何

两种情况之间的区别在于,在第二个“elif”分支被执行时,值被切换并且函数被再次调用并使用切换的值。但在第二种情况下,返回是“无”。为什么在第二种情况下它不返回“a”值?

4

1 回答 1

3

在第二个 if 语句的 switch 之前添加一个 return 语句

return switch(b,a)

The switch method returns a but the missing return statement means the value returned by the switch statement is not returned hence the default None is returned.

于 2013-01-09T02:06:09.640 回答