如何解决Python递归函数执行结束后返回None的问题
为什么执行后会返回None
Python的所有函数都有默认返回规则:如果没有主动写return语句指定返回内容,函数运行完所有逻辑后会默认返回None。
我们可以拆解你给出的递归函数执行逻辑:
- 当传入的
numero > 0时,函数只会执行打印当前数值、递归调用自身的逻辑,没有任何return操作 - 当递归到
numero <= 0时,if判断不成立,函数没有执行任何操作就结束,同样没有return操作
不管哪条执行路径,函数最终都没有指定返回值,所以默认返回None,你外层调用print(cuenta_regresiva(5))的时候,就会把这个默认的None打印出来。
如何消除这个多余的None输出
有两种常用的解决方案:
- 不需要外层嵌套
print:这个函数的功能就是内部直接打印倒计时,不需要接收返回值再二次打印,直接写cuenta_regresiva(5)即可,去掉外层的print就不会输出None了。 - 如果你确实需要函数有明确的返回值,可以补充
return语句,比如你希望最后返回0,就可以修改函数为:
def cuenta_regresiva(numero): if numero > 0: print(numero) return cuenta_regresiva(numero-1) return 0 print(cuenta_regresiva(5))
这种情况下函数最终会返回0,打印出来的就是0而不是None。
内容的提问来源于stack exchange,提问作者SebastianGamboa
相关产品推荐
相关产品推荐

