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