ホームページ >バックエンド開発 >Python チュートリアル >Python で再帰関数が「None」を返すのはなぜですか?

Python で再帰関数が「None」を返すのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-24 12:16:24202ブラウズ

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

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