Maison > développement back-end > Tutoriel Python > Pourquoi ma fonction récursive renvoie-t-elle « Aucun » en Python ?

Pourquoi ma fonction récursive renvoie-t-elle « Aucun » en Python ?

Barbara Streisand
Libérer: 2024-11-24 12:16:24
original
214 Les gens l'ont consulté

Why Does My Recursive Function Return `None` in 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)
Copier après la connexion

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)
Copier après la connexion

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!

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