Maison > développement back-end > Tutoriel Python > Pourquoi ma fonction Python récursive ne renvoie-t-elle aucun résultat lorsque j'essaie de trouver un chemin ?

Pourquoi ma fonction Python récursive ne renvoie-t-elle aucun résultat lorsque j'essaie de trouver un chemin ?

Linda Hamilton
Libérer: 2024-11-22 16:56:26
original
580 Les gens l'ont consulté

Why Does My Recursive Python Function Return None When Trying to Find a Path?

Renvoyer un chemin de manière récursive en Python

En Python, vous avez rencontré un problème en essayant de renvoyer un chemin à partir d'une fonction récursive. Au lieu de cela, vous obtenez None dans le résultat.

Le code fourni cherche à parcourir un dictionnaire représentant une structure de système de fichiers, en recherchant un fichier spécifié par rqfile. Le chemin d'accès à ce fichier doit être renvoyé s'il est trouvé.

La cause première du problème est que lors d'une récurrence dans le dictionnaire, la fonction tente de renvoyer None dans la branche else lorsqu'elle rencontre une valeur non-dictionnaire. Cela met fin prématurément à la fonction, ce qui entraîne le retour de None.

Pour remédier à cela, vous devez renvoyer systématiquement le résultat de l'appel récursif :

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:
        # Remove unnecessary else block
        return get_path(directory[filename], rqfile, path)
Copier après la connexion

Ce code garantit que la fonction renvoie le chemin s'il est trouvé ou le résultat de l'appel récursif si le chemin actuel n'est pas celui que vous recherchez. Alternativement, vous pouvez également gérer le cas extrême où rqfile n'est pas présent dans le chemin actuel :

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 None
    return get_path(directory[filename], rqfile, path)
Copier après la connexion

En implémentant l'une de ces solutions, votre fonction renverra correctement le chemin d'accès au fichier demandé ou Aucun s'il est introuvable.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal