[Python] Was verwendet werden sollte, return oder return None

Sollte ich "return None" oder "return" verwenden, wenn ich die Funktionsverarbeitung mit der return-Anweisung beenden möchte?

Als ich eine Python-Funktion schrieb, fragte ich mich plötzlich.

Die Frage ist, ob Sie "return" oder "return None" schreiben sollten, wenn Sie den Prozess in der Mitte der Funktion beenden möchten.

Da empfohlen wird, explizit in Python zu schreiben, habe ich mich gefragt, ob ich "return None" schreiben soll, sowohl beim Beenden des Prozesses mit der return-Anweisung als auch bei der Rückgabe von "None". (* Wenn in Python nur "return" in die Funktionsdefinition geschrieben ist oder wenn keine Beschreibung von "return" vorhanden ist, wird "None" zurückgegeben. Referenz: [Python] Von der Funktion zurückgegebener Wert, der die Rückgabe nicht beschrieben hat. )

Aus der Schlussfolgerung geht hervor, dass ** return` besser ist **, wenn Sie nur die Funktion beenden möchten. Es scheint jedoch einige Dinge zu beachten, wenn Sie nur "return" schreiben.

Lassen Sie mich Ihnen ein Beispiel geben

return, return None und überhaupt keine Rückkehr? war hilfreich. Lassen Sie mich anhand eines Beispiels erklären.

Verwenden Sie return None

def hello_all():
    persons = ['Zepp', 'Eric']

    if persons:
        for person in persons:
             print('Hello ' + person)
    #Gibt None zurück, wenn die Liste leer ist
    else:
        return None

Verwenden Sie "return"

Wenn Sie den Rückgabewert None verwenden möchten, haben Sie explizit "return None" geschrieben. Wenn Sie jedoch die Funktion beenden möchten, anstatt den Rückgabewert zu verwenden, können Sie "return" verwenden. Der folgende Code wird verwendet, um die for-Schleife zu verlassen und die Funktion zu beenden.

def hello_zepp():

    persons = ['Zepp', 'Eric']

    for person in persons:
        print('Hello ' + person)
        #Verarbeitung beenden
        return

Mit anderen Worten, wenn ** for loop single ist, funktioniert es genauso wie break **.

Wenn Sie den Prozess in einer for-Schleife beenden möchten, die in mehreren for-Schleifen verschachtelt ist, können Sie die Funktion im Gegensatz zu break beenden, indem Sie nur eine return schreiben, was den Code vereinfacht.

Wenn Sie "return" auf diese Weise verwenden, verwenden Sie es, wenn Sie den Prozess in der Mitte der Funktion zwangsweise beenden möchten, z. B. beim Verlassen der Schleife.

: no_good: Sei vorsichtig

In diesem Fall sollte der Rückgabewert "None" nicht verwendet werden, daher sollten Sie den Rückgabewert keiner Variablen zuweisen.

#↓ sollte nicht gemacht werden
result = hello_zepp()

Wenn Sie die Funktion in der Mitte beenden möchten, möchten Sie den Vorgang möglicherweise unterbrechen, da die Bedingungen nicht erfüllt sind. In einem solchen Fall ist es besser, eine geeignete Ausnahmeklasse zu erstellen, eine Ausnahme auszulösen und die Ausnahme beim Aufrufer zu behandeln, als "return" zu verwenden.

Keine Beschreibung von "return"

Python-Funktionen erfordern nicht unbedingt eine return-Anweisung, aber selbst wenn keine return-Anweisung vorhanden ist, wird "None" als Rückgabewert zurückgegeben.

#Es gibt keine return-Anweisung, aber None wird als Rückgabewert zurückgegeben
def hello_eric():

    persons = ['Zepp', 'Eric']
        print('Hello ' + persons[1])

Auch in diesem Fall, wie im Fall von "return None", sollte dieses "None" nicht verwendet werden. Weisen Sie den Rückgabewert daher nicht einer Variablen zu.

Fazit

Recommended Posts

[Python] Was verwendet werden sollte, return oder return None
Welches sollte ich für die Datenanalyse studieren, R oder Python?
Was ist besser, PyPy oder Python?
[Python] gibt A [oder / und] B zurück
33 Zeichenfolgen, die in Python nicht als Variablennamen verwendet werden sollten
Was ist schneller, Python Shuffle oder Sample?
++ und-können nicht zum Inkrementieren / Dekrementieren in Python verwendet werden
Python frühe Rückkehr
Python Hinweis: Wenn der Befehl pip nicht verwendet werden kann
[Python] Der Boolesche Operator (oder / und) gibt keinen Booleschen Wert zurück
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
[Memorandum] Japanische Schlüssel können nicht in Pythons string.Template.substitute verwendet werden
Listenverständnis, da operator.methodcaller nicht mit Python 2.5 verwendet werden kann
Operatoren ++, - können nicht in Python verwendet werden (Unterschied zu PHP)
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
Unterschied zwischen return, return None und no return description in Python
Python> Überprüfen Sie NoneType oder nicht> wenn a == None:> wenn a None ist:
Was ist besser, wenn Pythons Standardeingabe input () oder sys.stdin empfängt?
[Redash] Die Standardbibliothek kann nicht in der Python-Funktion verwendet werden