1017 Stimmen

Python Inkrementierung von Ganzzahlen mit ++

Ich habe immer gelacht, wenn ich auf meine VB6-Tage zurückblickte und dachte: "Welche moderne Sprache erlaubt keine Inkrementierung mit doppelten Pluszeichen?":

number++

Zu meiner Überraschung kann ich in den Python-Dokumenten nichts darüber finden. Muss ich mich wirklich der number = number + 1 ? Benutzen die Leute nicht die ++ / -- Notation?

10 Stimmen

Ich für meinen Teil bin ganz froh, dass wir uns nicht mit Dingen herumschlagen müssen wie a[i] = i++; wobei die Reihenfolge der Auswertung in C++ undefiniert ist.

3 Stimmen

Selbst wenn es so etwas gibt, denke ich, dass die Reihenfolge in Python klar definiert ist. ( docs.python.org/reference/expressions.html#evaluation-order )

5 Stimmen

Antworten auf Ihre Fragen in der angegebenen Reihenfolge: "Erlang, Python, Lua usw." (für "modern" im Sinne von nach der Entwicklung von C); "Nein"; und "Nicht unbedingt".

12voto

Uri Punkte 86472

Werfen Sie einen Blick auf Verhalten von Inkrement- und Dekrementoperatoren in Python für eine Erklärung, warum dies nicht funktioniert.

Python hat nicht wirklich ++ und --, und ich persönlich habe das nie als Verlust empfunden.

Ich bevorzuge Funktionen mit eindeutigen Namen gegenüber Operatoren mit nicht immer eindeutiger Semantik (daher die klassische Interviewfrage zu ++x vs. x++ und die Schwierigkeiten beim Überladen). Ich war auch nie ein großer Fan davon, was Post-Inkrementierung für die Lesbarkeit bedeutet.

Sie könnten immer eine Wrapper-Klasse (wie Akkumulator) mit klarer Inkrement-Semantik definieren und dann etwas wie x.increment() oder x.incrementAndReturnPrev() tun

9voto

pygabriel Punkte 9640

Hier gibt es eine Erklärung: http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python

Das Fehlen dieses Operators entspricht jedoch der Python-Philosophie, die die Konsistenz erhöht und Implizitheit vermeidet.

Darüber hinaus ist diese Art von Inkrementen in Python-Code nicht weit verbreitet, da Python eine starke Implementierung des Iterator-Musters sowie die Funktion enumerate hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X