Maison > Article > développement back-end > Pourquoi ma fonction récursive renvoie-t-elle « Aucun » en Python ?
La fonction récursive ne renvoie aucun en Python résolu
Lorsque vous essayez de renvoyer un chemin dans une fonction récursive, un problème peut survenir où "Aucun" est renvoyé à la place. Ce problème peut être résolu en garantissant que le résultat récursif est renvoyé. Voici une explication du pourquoi et comment y remédier :
Dans le code fourni :
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)
L'appel récursif se termine par get_path(directory[filename], rqfile, path) sans retour . Cela signifie que si rqfile n'est pas dans str(os.path.join(*path)), la fonction se termine sans rien retourner explicitement, ce qui entraîne une valeur de retour par défaut de None.
Pour résoudre ce problème, le récursif le résultat doit être renvoyé comme ceci :
else: return get_path(directory[filename], rqfile, path)
En retournant toujours à la fin de la fonction, qu'il s'agisse ou non d'un appel récursif, nous nous assurons qu'un retour est explicitement donné, empêchant "Aucun" ne doit pas être renvoyé.
Notez que la branche else après if not isinstance(dictionary[filename], dict): peut être supprimée, car la fonction doit retourner dans les deux cas : lorsque rqfile est dans le chemin et quand ce n'est pas le cas, et il n'est pas nécessaire d'avoir une branche else pour simplement terminer la fonction.
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!