Lösen des None-Return-Problems in rekursiven Funktionen
Beim Umgang mit rekursiven Funktionen ist die Sicherstellung einer ordnungsgemäßen Return-Behandlung von entscheidender Bedeutung, um unerwartete None-Werte zu vermeiden. Betrachten Sie die folgende Funktion, die Benutzer wiederholt auffordert, entweder „a“ oder „b“ einzugeben:
def get_input(): my_var = input('Enter "a" or "b": ') if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') get_input() else: return my_var print('got input:', get_input())
Wenn Benutzer „a“ oder „b“ richtig eingeben, funktioniert die Funktion wie erwartet, aber wenn sie eingeben Wenn Sie jedes andere Zeichen eingeben, gibt die Funktion eine Fehlermeldung aus und ruft sich selbst rekursiv auf. Allerdings gibt der rekursive Aufruf die gesammelte Eingabe nicht korrekt zurück.
Das Problem entsteht dadurch, dass der rekursive Aufruf nicht mit einer Return-Anweisung beendet wird, wenn die Eingabe nicht „a“ oder „b“ ist. Python interpretiert dies als Erreichen des Endes der Funktion und gibt implizit None zurück. Dieses Verhalten ähnelt:
def f(x): pass print(f(20)) # Implicitly returns None
Um dieses Problem zu beheben, muss man die if-Anweisung ändern, um das Ergebnis des rekursiven get_input()-Aufrufs zurückzugeben:
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
Indem man dies einbezieht Anpassung gibt die Funktion die Eingabe auch dann korrekt zurück, wenn Benutzer falsche Zeichen eingeben und ihre Eingabe dann korrigieren.
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass rekursive Funktionen in Python „None' zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!