ホームページ >バックエンド開発 >Python チュートリアル >パスを検索しようとすると、再帰的な Python 関数が何も返さないのはなぜですか?

パスを検索しようとすると、再帰的な Python 関数が何も返さないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-22 16:56:26533ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。