887
votes

I've always laughed to myself when I've looked back at my VB6 days and thought, "What modern language doesn't allow incrementing with double plus signs?":

number++

To my surprise, I can't find anything about this in the Python docs. Must I really subject myself to number = number + 1? Don't people use the ++/-- notation?

7
I for one am quite happy that we don't have to put up with things like a[i] = i++; where the order of evaluation in C++ is undefined. - Tim Pietzcker
Answers to your questions in the given order: “Erlang, Python, Lua etc” (for "modern" meaning after the creation of C); “No”; and “Not necessarily”. - tzot
Disagree with y'all: i++ is less to write so less to read. Less to read means brain can focus more on the big picture. - Robino
@TimPietzcker: a better solution would be to well define the evaluation order, probably from left to right, rather than dropping a useful operator. And to the OP: Python is hardly a modern language... and is a quite crappy language actually, despite being widely used. - Yakov Galka
@uoɥʇʎPʎzɐɹC Neither is particularly complex and neither is ugly. The first one is quicker to understand. - Robino

7 Answers

1564
votes

Python doesn't support ++, but you can do:

number += 1
497
votes

Simply put, the ++ and -- operators don't exist in Python because they wouldn't be operators, they would have to be statements. All namespace modification in Python is a statement, for simplicity and consistency. That's one of the design decisions. And because integers are immutable, the only way to 'change' a variable is by reassigning it.

Fortunately we have wonderful tools for the use-cases of ++ and -- in other languages, like enumerate() and itertools.count().

52
votes

You can do:

number += 1
32
votes

Yes. The ++ operator is not available in Python. Guido doesn't like these operators.

24
votes

The main reason ++ comes in handy in C-like languages is for keeping track of indices. In Python, you deal with data in an abstract way and seldom increment through indices and such. The closest-in-spirit thing to ++ is the next method of iterators.

10
votes

Take a look at Behaviour of increment and decrement operators in Python for an explanation of why this doesn't work.

Python doesn't really have ++ and --, and I personally never felt it was such a loss.

I prefer functions with clear names to operators with non-always clear semantics (hence the classic interview question about ++x vs. x++ and the difficulties of overloading it). I've also never been a huge fan of what post-incrementation does for readability.

You could always define some wrapper class (like accumulator) with clear increment semantics, and then do something like x.increment() or x.incrementAndReturnPrev()

8
votes

Here there is an explanation: http://bytes.com/topic/python/answers/444733-why-there-no-post-pre-increment-operator-python

However the absence of this operator is in the python philosophy increases consistency and avoids implicitness.

In addition, this kind of increments are not widely used in python code because python have a strong implementation of the iterator pattern plus the function enumerate.