Das Ändern von Listenmethoden wie Anhängen, Sortieren, Erweitern, Entfernen, Löschen und Umkehren gibt normalerweise eher None zurück als die geänderte Liste selbst. Diese Entwurfsentscheidung basiert auf dem übergeordneten Prinzip von Python, dass Funktionen, die Objekte an Ort und Stelle ändern, None zurückgeben sollten.
Laut Guido van Rossum, dem Python-Architekten , dient diese Wahl dazu, zu betonen, dass kein neues Objekt erstellt wird. Dadurch, dass die geänderte Liste nicht zurückgegeben wird, wird von der Verwendung verketteter Nebenwirkungen abgeraten, wie zum Beispiel:
x.compress().chop(y).sort(z)
die verwirrend sein und die Lesbarkeit beeinträchtigen können. Stattdessen bevorzugt Python die explizitere Form:
x.compress() x.chop(y) x.sort(z)
Diese Trennung macht deutlich, dass jede Methode auf dasselbe Objekt wirkt.
Während der Verkettungsseite Von -effect-Aufrufen wird abgeraten. Python lässt sie für Vorgänge zu, die neue Werte zurückgeben, wie etwa die String-Verarbeitung Operationen:
y = x.rstrip("\n").split(":").lower()
Diese Entwurfsentscheidung hat Nachteile. Es verhindert eine intuitive „Verkettung“ der Listenverarbeitung, wie zum Beispiel:
mylist.reverse().append('a string')[:someLimit]
Alternativen wie Listenverständnis und andere Datenstrukturen können ähnliche Funktionen bereitstellen, ohne die Konvention „keine Nebenwirkungen zurückgeben“ zu verletzen.
Das obige ist der detaillierte Inhalt vonWarum geben Pythons Listenänderungsmethoden „None' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!