函数返回的问题
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))
返回得又是正常的?
第一个函数,因为你return在 else 中,且你第一次传入的值是 155 ,符合 if 条件
那么你执行此函数时, 符合 if 条件 ,进入的是 if 的代码块,就不会进入 else
所以此时无论递归如何返回,都无关最开始的返回值,即函数 get_digits 的执行过程没有遇到 return (不包括递归过程) 所以 Python 默认返回 None
而第二个函数,无论 if 条件是否满足,都会执行 return list1
Twilight6 发表于 2021-6-14 16:16
第一个函数,因为你return在 else 中,且你第一次传入的值是 155 ,符合 if 条件
那么你执行此函数时 ...
明白了,if 判断的是 n ,而 n 赋值是155,所以 n 不存在等于0的情况{:10_277:}
页:
[1]