Heim > Backend-Entwicklung > Python-Tutorial > Warum gibt meine rekursive Python-Funktion „Keine' zurück, wenn ich versuche, einen Pfad zu finden?

Warum gibt meine rekursive Python-Funktion „Keine' zurück, wenn ich versuche, einen Pfad zu finden?

Linda Hamilton
Freigeben: 2024-11-22 16:56:26
Original
576 Leute haben es durchsucht

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

Rekursive Rückgabe eines Pfads in Python

In Python ist beim Versuch, einen Pfad von einer rekursiven Funktion zurückzugeben, ein Problem aufgetreten. Stattdessen erhalten Sie im Ergebnis None.

Der bereitgestellte Code versucht, ein Wörterbuch zu durchlaufen, das eine Dateisystemstruktur darstellt, und nach einer durch rqfile angegebenen Datei zu suchen. Der Pfad zu dieser Datei sollte zurückgegeben werden, wenn er gefunden wird.

Die Hauptursache des Problems besteht darin, dass die Funktion bei der Rekursion durch das Wörterbuch versucht, None im else-Zweig zurückzugeben, wenn sie auf einen Nicht-Wörterbuch-Wert stößt. Dadurch wird die Funktion vorzeitig beendet, was dazu führt, dass None zurückgegeben wird.

Um dies zu beheben, müssen Sie das Ergebnis des rekursiven Aufrufs konsistent zurückgeben:

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

Dieser Code garantiert, dass die Funktion zurückkehrt der Pfad, wenn er gefunden wurde, oder das Ergebnis des rekursiven Aufrufs, wenn der aktuelle Pfad nicht der gesuchte ist. Alternativ können Sie auch den Randfall behandeln, bei dem rqfile im aktuellen Pfad nicht vorhanden ist:

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

Durch die Implementierung einer dieser Lösungen gibt Ihre Funktion den Pfad zur angeforderten Datei korrekt zurück oder „Keine“, wenn dies der Fall ist nicht gefunden.

Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive Python-Funktion „Keine' zurück, wenn ich versuche, einen Pfad zu finden?. 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