为什么我的递归 Python 函数在尝试查找路径时不返回任何内容?

Linda Hamilton
发布: 2024-11-22 16:56:26
原创
486 人浏览过

Why Does My Recursive Python Function Return None When Trying to Find a Path?

在 Python 中递归返回路径

在 Python 中,您在尝试从递归函数返回路径时遇到了问题。相反,您在结果中获得 None。

提供的代码旨在遍历表示文件系统结构的字典,搜索 rqfile 指定的文件。如果找到该文件的路径,则应返回该文件的路径。

问题的根本原因是,在递归字典时,该函数在遇到非字典值时会尝试在 else 分支中返回 None 。这会提前终止函数,导致 None 被返回。

要纠正这个问题,您需要一致地返回递归调用的结果:

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:
        # Remove unnecessary else block
        return get_path(directory[filename], rqfile, path)
登录后复制

此代码保证函数返回路径(如果找到)或递归调用的结果(如果当前路径不是您要查找的路径)。或者,您还可以处理当前路径中不存在 rqfile 的边缘情况:

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:
            return None
    return get_path(directory[filename], rqfile, path)
登录后复制

通过实现这些解决方案中的任何一个,您的函数将正确返回请求文件的路径,如果是,则返回 None未找到。

以上是为什么我的递归 Python 函数在尝试查找路径时不返回任何内容?的详细内容。更多信息请关注PHP中文网其他相关文章!

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