Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich verhindern, dass rekursive Funktionen in Python „None' zurückgeben?

Wie kann ich verhindern, dass rekursive Funktionen in Python „None' zurückgeben?

DDD
DDDOriginal
2024-12-21 02:21:11753Durchsuche

How Can I Prevent Recursive Functions from Returning None in Python?

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!

Stellungnahme:
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
Vorheriger Artikel:TageszeichenfolgenfunktionenNächster Artikel:Tageszeichenfolgenfunktionen