Warum gibt meine rekursive Python-Funktion „Keine' anstelle des erwarteten Pfads zurück?

Susan Sarandon
Freigeben: 2024-11-14 21:22:02
Original
706 Leute haben es durchsucht

Why Does My Recursive Python Function Return None Instead of the Expected Path?

Rekursive Funktionen und die Rückgabe von „Keine“ in Python [Duplikat]

In Python können rekursive Funktionen ein wirksames Werkzeug zur Lösung komplexer Probleme sein. Es ist jedoch wichtig, die Mechanismen der Rekursion zu verstehen, um unerwartete Ergebnisse zu vermeiden.

Bedenken Sie den folgenden Codeausschnitt:

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)
Nach dem Login kopieren

Diese Funktion zielt darauf ab, den Pfad zu einer bestimmten Datei innerhalb einer verschachtelten Datei zurückzugeben Wörterbuch. Bei der Ausführung tritt jedoch das Problem auf, dass None anstelle des erwarteten Pfads zurückgegeben wird.

Das Problem liegt in der Handhabung des rekursiven Aufrufs. Um die Rekursion korrekt zu implementieren, muss das Ergebnis des rekursiven Aufrufs an die aufrufende Funktion zurückgegeben werden. In diesem Fall sollte dies innerhalb des else-Blocks erfolgen:

else:
    return get_path(directory[filename], rqfile, path)
Nach dem Login kopieren

Dadurch wird sichergestellt, dass die Funktion das Ergebnis zurück in die rekursive Kette weiterleitet und schließlich den Pfad an den Aufrufer zurückgibt.

Alternativ kann das Problem auch durch Entfernen des else-Blocks und immer eine Rückkehr am Ende der for-Schleife behoben werden:

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))
    return get_path(directory[filename], rqfile, path)
Nach dem Login kopieren

Durch die konsistente Rückgabe des rekursiven Ergebnisses kann die Funktion nun den Pfad korrekt abrufen und zurückgeben die gewünschte Datei.

Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive Python-Funktion „Keine' anstelle des erwarteten Pfads zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage