gpt4 book ai didi

python - 递归函数在 False 条件下运行,返回 None

转载 作者:行者123 更新时间:2023-12-04 08:11:52 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Recursive function returning none in Python [duplicate]

(2 个回答)


7 个月前关闭。




我有以下功能对人名执行 fuzzymatching 。它需要一个字典,其中的键是我匹配的名称。创建字典很昂贵,我将在笔记本中使用该函数,其中 a 可能已经创建了字典......所以我想保留每次运行该函数时不创建它的选项。为此,我将其默认为 None 以便在需要时可以通过它。如果我还没有初始化它,它会自己初始化。
注意 get_player_dict() 是返回字典的函数:

def match_player_names(input_name, player_dict=None):
matches = []
if player_dict:
for player in list(map(lambda player: player.lower(), player_dict.keys())):
if fuzz.partial_ratio(input_name, player) > 75:
matches.append(player)
else:
match_player_names(input_name, player_dict=get_player_dict())

return matches
这不返回任何内容( matches[] )。但是,如果我简单地复制/粘贴 True 条件中的代码并用字典的初始化替换递归,它工作正常(如下所示):
    else:
for player in list(map(lambda player: player.lower(), player_dict.keys())):
if fuzz.partial_ratio(input_name, player) > 75:
matches.append(player)
任何想法为什么递归不起作用?

最佳答案

您没有从 else 内部的调用中捕获返回值声明,所以 matches仍然是空的。

else:
matches = match_player_names(input_name, player_dict=get_player_dict())
或者干脆
else:
return match_player_names(input_name, player_dict=get_player_dict())

关于python - 递归函数在 False 条件下运行,返回 None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65914127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com