我有一个奇怪的问题,返回递归函数。它总是返回'None'而不是temp_blocks。他会在else-case中编写temp_blocks(块列表,而不是None),但是如果我调用函数blocks = _searchblocks(roots, left_edge, right_edge)
,它似乎不会返回列表。这是一个常见问题,还是我的错?
def _searchblocks(blocks, left_edge, right_edge):
temp_blocks = []
for block in blocks:
if np.any(block.left_edge >= left_edge) \
and np.any(block.right_edge <= right_edge):
temp_blocks.append(block)
if len(temp_blocks) == 1:
_searchblocks(temp_blocks[0].children, left_edge, right_edge)
else:
print(temp_blocks)
return temp_blocks
答案 0 :(得分:8)
您需要一个明确的return
声明:
if len(temp_blocks) == 1:
return _searchblocks(temp_blocks[0].children, left_edge, right_edge)
^^^^^^
如果没有这个,你的函数会递归调用,丢弃结果,然后隐式返回None
。