Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt meine rekursive Python-Funktion „Keine' anstelle des erwarteten Pfads zurück?

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

Susan Sarandon
Freigeben: 2024-11-14 21:22:02
Original
786 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 weitergibt und schließlich den Pfad an den Aufrufer zurückgibt.

Alternativ kann das Problem auch dadurch behoben werden, dass der else-Block entfernt wird und immer am Ende der for-Schleife zurückgekehrt wird:

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 konsequente Rückgabe von Als rekursives Ergebnis kann die Funktion nun den Pfad zur gewünschten Datei korrekt abrufen und zurückgeben.

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