我有一些基本上看起来像这样的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))
Run Code Online (Sandbox Code Playgroud)
奇怪的是:print(my_list)打印出正确的内容.但是,打印函数返回值的第二个print语句始终打印"None".即使我用return("abc")替换正常的return语句,它仍然是None.
由于变量的内容在return语句之前似乎是正确的一行,我不知道从哪里开始调试.是否有可能导致此问题的常见问题?
pra*_*nsg 11
这是发生的事情:
process(my_start_list).if如果len(my_list) > 1在那里没有return语句,则执行该块.现在,由于else尚未执行,因为这是唯一拥有return子句的地方,所以返回默认值None.要解决此问题,您需要返回返回的列表process(my_list).
那是:
def process(my_list):
# do some stuff
...
if len(my_list) > 1:
return process(my_list)
else:
print(my_list)
return my_list
Run Code Online (Sandbox Code Playgroud)
当你有1或0个元素(基本情况)时,你只返回列表.在第一个块中也需要一个return语句,在那里进行递归调用,否则你深入到基本情况,将length-1列表返回到下一个级别,然后返回None剩下的部分.所以你想要的是这样的,相反:
def process(my_list):
# Do some stuff.
if len(my_list) > 1:
return process(my_list) #If you don't return this result, you return None
else:
print(my_list)
return my_list
Run Code Online (Sandbox Code Playgroud)
现在每种情况(不仅仅是基本情况)都有一个返回值,因此返回值将一直传播回初始调用.
| 归档时间: |
|
| 查看次数: |
13650 次 |
| 最近记录: |