sc-tbm 发表于 2021-6-14 16:11:58

函数返回的问题

list1 = []
def get_digits(n):
    if n:
      list1.insert(0,n%10)
      get_digits(n//10)
    else:
      return list1

print(get_digits(155))
为什么上面的返回值是 None


而下面这个
list1 = []
def get_digits(n):
    if n:
      list1.insert(0,n%10)
      get_digits(n//10)
    return list1

print(get_digits(155))

返回得又是正常的?

Twilight6 发表于 2021-6-14 16:16:04


第一个函数,因为你return在 else 中,且你第一次传入的值是 155 ,符合 if 条件

那么你执行此函数时, 符合 if 条件 ,进入的是 if 的代码块,就不会进入 else

所以此时无论递归如何返回,都无关最开始的返回值,即函数 get_digits 的执行过程没有遇到 return (不包括递归过程) 所以 Python 默认返回 None

而第二个函数,无论 if 条件是否满足,都会执行 return list1

sc-tbm 发表于 2021-6-14 17:48:03

Twilight6 发表于 2021-6-14 16:16
第一个函数,因为你return在 else 中,且你第一次传入的值是 155 ,符合 if 条件

那么你执行此函数时 ...

明白了,if 判断的是 n ,而 n 赋值是155,所以 n 不存在等于0的情况{:10_277:}
页: [1]
查看完整版本: 函数返回的问题