Heim >Backend-Entwicklung >Python-Tutorial >Warum geben Pythons Methoden zur Listenänderung „None' anstelle der geänderten Liste zurück?
Pythons Listenänderungsmethoden wie „append“, „sort“ und „extend“ haben das eigenartige Verhalten, dass sie „None“ zurückgeben, anstatt die geänderte Liste selbst. Diese Designentscheidung hat bei Programmierern Neugier geweckt.
In Java gibt list.sort() beispielsweise die sortierte Liste zurück, sodass Entwickler Methodenaufrufe bequem verketten können. Aber in Python ist diese Verkettung nicht möglich, was die Frage aufwirft: Warum haben die Designer von Python diese Wahl getroffen?
Designprinzip: Betonung der In-Place-Änderung
Ein grundlegendes Designprinzip in Python besteht darin, dass Funktionen, die Objekte direkt verändern, None zurückgeben sollten. Dies vermittelt auf subtile Weise, dass kein neues Objekt zurückgegeben wird.
Guido van Rossums Perspektive
Guido van Rossum, der Schöpfer von Python, erläuterte die Gründe für diese Entscheidung für Python -Dev-Mailingliste. Er schlägt vor, dass die Rückgabe von „None“ einer „Bedrohung der Lesbarkeit“ vorbeugt, die durch die Verkettung mehrerer Nebeneffektaufrufe entsteht.
Im folgenden Beispiel erfordert die Verkettungsform:
x.compress().chop(y).sort(z)
tiefe Kenntnisse jeder Methode in der Kette. Die zweite Form:
x.compress() x.chop(y) x.sort(z)
ist expliziter und macht deutlich, dass jede Methode auf dasselbe Objekt wirkt. Dies trägt dazu bei, die Klarheit des Codes aufrechtzuerhalten, insbesondere wenn mit unbekannten Klassen oder Methoden gearbeitet wird.
Ausnahmen von der Regel
Während das allgemeine Prinzip für Änderungen vor Ort gilt Um Keine zurückzugeben, gibt es Ausnahmen:
Wie van Rossum anmerkt, ist es jedoch wichtig, die Verkettung auf solche Operationen zu beschränken, die neue Werte zurückgeben, um Verwirrung und Lesbarkeitsprobleme zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum geben Pythons Methoden zur Listenänderung „None' anstelle der geänderten Liste zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!