weixin_45395727
2019-07-12 15:00 阅读 1.7k

python return返回的值为什么总是None

请问下这段代码中,不论把return更换为return 123、return num、return "h"等等,最后打印出的结果都不受return影响,return返回的值总是None

def sum_number(num):

    print(num)
    if num == 1:
        return
        # return 123
        # return num
        # return "h"
    sum_number(num - 1)


print(sum_number(3))

def sum_number(num):

    print(num)
    if num == 1:
        return 123
    sum_number(num - 1)


print(sum_number(3))
def sum_number(num):

    print(num)
    if num == 1:
        return "h"
    sum_number(num - 1)


print(sum_number(3))
def sum_number(num):

    print(num)
    if num == 1:
        return num
    sum_number(num - 1)


print(sum_number(3))

最后的打印结果都是:

3
2
1
None

是我在对比另一段代码:

def sum_numbers(num):

    if num == 1:
        return 1

    temp = sum_numbers(num - 1)

    return num + temp


result = sum_numbers(100)
print(result)

结果:

5050

产生的疑问

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • Jn0826 記憶‘der 2019-07-12 18:19

    抱歉,我一开始的回复有问题 。
    def sum_number(num):
    print(num)
    if num == 1:
    return 123
    else:
    k=sum_number(num - 1)
    return k

    print(sum_number(3))
    3
    2
    1
    123

    这样就对了!主要是因为递归调用时,k=sum_number(num - 1)会一直不停的运行,需要一个合理的打断跳出,否则函数无合理返回就会显示None。所以递归调用时,条件变换两块都需要return。

    点赞 1 评论 复制链接分享

相关推荐