提供された Python コードでは、get_path という名前の再帰関数がファイルの検索を試行しています ( rqfile) をネストされた辞書 (dictionary) に保存します。ただし、ファイルへのパスが見つかり、返す必要がある場合、関数は 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)
この問題を解決するには、関数が再帰呼び出しの結果を返す必要があります。デフォルトでは、明示的な return ステートメントがない場合、Python 関数は None を返します。正しいパスを返すには、関数の最後の行を次のように置き換えます。
return get_path(directory[filename], rqfile, path)
この変更により、関数は再帰呼び出し中に見つかったパスを返すようになります。更新されたコードは次のとおりです:
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: return get_path(directory[filename], rqfile, path)
以上が入れ子になった辞書でファイルを検索すると、再帰的 Python 関数が何も返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。