为什么我的递归函数在 Python 中返回'None”?

Barbara Streisand
发布: 2024-11-24 12:16:24
原创
139 人浏览过

Why Does My Recursive Function Return `None` in Python?

Python 中的递归函数返回 None 已解决

尝试在递归函数中返回路径时,可能会出现“None”问题而是返回。这可以通过确保返回递归结果来解决。以下是原因以及如何修复它的解释:

在提供的代码中:

def get_path(dictionary, rqfile, prefix=[]):
    for filename in dictionary.keys():
        path = prefix + [filename]
        if not isinstance(dictionary[filename], dict):
            if rqfile in str(os.path.join(*path)):
                return str(os.path.join(*path))
        else:
            get_path(directory[filename], rqfile, path)
登录后复制

递归调用以 get_path(directory[filename], rqfile, path) 结束,没有返回。这意味着如果 rqfile 不在 str(os.path.join(*path)) 中,则函数结束时不会显式返回任何内容,从而导致默认返回值 None。

为了解决此问题,递归结果应该像这样返回:

else:
    return get_path(directory[filename], rqfile, path)
登录后复制

通过始终在函数末尾返回,无论是否是递归调用,我们确保显式返回

请注意,if not isinstance(dictionary[filename], dict): 分支之后的 else 可以被删除,因为该函数在两种情况下都应该返回:当 rqfile 时位于路径中,当不在路径中时,不需要 else 分支来简单地结束函数。

以上是为什么我的递归函数在 Python 中返回'None”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板