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".
0 Stimmen
Meinen Sie das Präfix
++
oder Postfix++
? Ich selbst habe es gehasst, diesen Teil der Sprache C zu unterrichten, und habe ihn wegen der Mehrdeutigkeiten gemieden. Warum sollte man diese furchtbaren Dinge in anderen Sprachen suchen?4 Stimmen
Warum also die Abkürzungen für allgegenwärtige Aufgaben?
84 Stimmen
Ich stimme nicht mit Ihnen überein:
i++
ist weniger zu schreiben, also weniger zu lesen. Weniger zu lesen bedeutet, dass sich das Gehirn mehr auf das große Ganze konzentrieren kann.11 Stimmen
@TimPietzcker: Eine bessere Lösung wäre, die Auswertungsreihenfolge genau zu definieren, wahrscheinlich von links nach rechts, anstatt einen nützlichen Operator wegzulassen. Und an den OP: Python ist kaum eine moderne Sprache... und eigentlich eine ziemlich beschissene Sprache, obwohl sie weit verbreitet ist.
2 Stimmen
@Robino Weniger zu lesen, mehr zu verarbeiten. Was ist komplexer und hässlicher,
i++
oi += 1
?7 Stimmen
@uoPzC Keines von beiden ist besonders komplex und keines ist hässlich. Die erste Variante ist schneller zu verstehen.
0 Stimmen
@TimPietzcker Python ist kaum eine beschissene oder archaische Sprache. Sie hat eine ziemlich einzigartige Syntax und ist leicht zu erlernen. Wenn Sie mit beschissen meinen, dass sie langsam ist, weil sie interpretiert und nicht kompiliert wird, dann ist Python tatsächlich sehr schnell.
0 Stimmen
++i vs. i++, dann lass uns noch einmal über "das Gehirn kann sich auf andere Dinge konzentrieren" sprechen, @Robino.
0 Stimmen
Ich lerne jetzt selbst Python (mit C#-Hintergrund) und finde das ärgerlich. Ich würde sagen, es ist klüger, es einfach zu implementieren und den Programmierer entscheiden zu lassen, wie er seine Syntax schreiben möchte. Ehrlich gesagt ist nichts an i++ zweideutig oder schwer zu verstehen. Die Leute, die ++i verwenden, ohne zu verstehen, was es bewirkt - das ist ihre Schuld. Ich denke einfach nicht, dass es fair ist, eine so gebräuchliche Anweisung wegzunehmen, aber was soll's, es ist wie es ist.
3 Stimmen
@JürgenA.Erhard
++i
= i wird inkrementiert und dann zurückgegeben.i++
= i zurückgegeben und dann hochgezählt wird. Scheint mir ziemlich einfach zu sein... Ja, eine brandneue Person, die das noch nie gesehen hat, weiß das vielleicht nicht, aber man braucht nicht viel, um es herauszufinden (eine einfache Google/SO-Suche), und die Flexibilität ist in manchen Situationen recht praktisch. Ich bin weniger liberal miti++
als andere (ich verwende normalerweise keine Dinge wieresult = array[i++]
zum Beispiel). @others Ich stimme zu, dass man schneller sehen kann, was vor sich geht als miti += 1
. Mein Gehirn muss weniger analysieren, und es macht einfach "klick", sobald ich es sehe.0 Stimmen
Noch erstaunlicher ist, dass sie 2022 immer noch kein "++" in die Sprache aufgenommen haben :-( Was die Lesbarkeit betrifft, so ist sie, wenn man nicht an "++" gewöhnt ist, natürlich weniger lesbar als x += 1 (so wie für manche Leute, die nicht an den ternären Operator gewöhnt sind, dieser ein "schreckliches Merkmal" ist...)
0 Stimmen
Gibt es einen Grund dafür, dass es immer noch keine
++
in Python?