Heim >Backend-Entwicklung >Python-Tutorial >Warum geben Pythons Methoden zur Listenänderung „None' anstelle der geänderten Liste zurück?

Warum geben Pythons Methoden zur Listenänderung „None' anstelle der geänderten Liste zurück?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 21:35:10434Durchsuche

Why Do Python's List Modification Methods Return `None` Instead of the Modified List?

Warum geben Pythons Listenänderungsmethoden „None“ 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:

  • Operationen, die neue Werte zurückgeben, z. B. Zeichenfolgenverarbeitungsoperationen wie rstrip() und split() gibt die geänderte oder verarbeitete Zeichenfolge zurück und ermöglicht so eine Verkettung.

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!

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