Heim >Backend-Entwicklung >Python-Tutorial >Warum geben Pythons Listenänderungsmethoden „None' zurück?

Warum geben Pythons Listenänderungsmethoden „None' zurück?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 18:29:13838Durchsuche

Why Do Python's List Modification Methods Return `None`?

Warum geben Python-Listenmethoden None statt der Liste zurück?

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.

Die Begründung

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.

Verkettungsoperationen

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()

Überlegungen

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!

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