【发布时间】:2013-04-03 13:40:19
【问题描述】:
我有一些基本上看起来像这样的 Python 代码:
my_start_list = ...
def process ( my_list ):
#do some stuff
if len(my_list) > 1:
process(my_list)
else:
print(my_list)
return my_list
print(process(my_start_list))
奇怪的是:print(my_list) 打印出正确的内容。但是,打印函数返回值的第二个打印语句总是打印None。
即使我用return("abc") 替换正常的return 语句,它仍然是None。
由于变量的内容在return语句之前的一行似乎是正确的,我不知道从哪里开始调试。 是否有任何常见问题可能导致此问题?
【问题讨论】:
-
递归调用时使用
return process(my_list)。 -
@NPE 我假设
#do some stuff包括以某种方式修改列表;否则你是对的;这应该无限期地递归。 -
do some stuff 确实修改了列表,所以不应该发生无限递归。但丢失的回报确实是问题所在,我不知道必须这样做。
-
这能回答你的问题吗? Why does my recursive function return None?