Maison > Article > développement back-end > Pourquoi ma fonction Python récursive ne renvoie-t-elle aucun résultat lors de la recherche d'un fichier dans un dictionnaire imbriqué ?
Dans le code Python fourni, une fonction récursive nommée get_path tente de rechercher un fichier ( rqfile) dans un dictionnaire imbriqué (dictionnaire). Cependant, lorsque le chemin d'accès au fichier est trouvé et doit être renvoyé, la fonction renvoie Aucun. Le code est le suivant :
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)
Pour résoudre ce problème, la fonction doit renvoyer le résultat de l'appel récursif. Par défaut, les fonctions Python renvoient None s'il n'y a pas d'instruction return explicite. Pour renvoyer le bon chemin, remplacez la dernière ligne de la fonction par ce qui suit :
return get_path(directory[filename], rqfile, path)
Cette modification garantit que la fonction renvoie le chemin trouvé lors de l'appel récursif. Voici le code mis à jour :
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)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!