Python integer incrementing with ++

PythonSyntaxIncrement

Python Problem Overview


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?

Python Solutions


Solution 1 - Python

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

number += 1

Solution 2 - Python

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

Solution 3 - Python

You can do:

number += 1

Solution 4 - Python

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

Solution 5 - Python

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.

Solution 6 - Python

Take a look at https://stackoverflow.com/questions/1485841/python-behaviour-of-increment-and-decrement-operators 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()

Solution 7 - Python

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionZnarkusView Question on Stackoverflow
Solution 1 - PythonDaniel StutzbachView Answer on Stackoverflow
Solution 2 - PythonThomas WoutersView Answer on Stackoverflow
Solution 3 - PythonknutinView Answer on Stackoverflow
Solution 4 - PythonPierre-Antoine LaFayetteView Answer on Stackoverflow
Solution 5 - PythonMike GrahamView Answer on Stackoverflow
Solution 6 - PythonUriView Answer on Stackoverflow
Solution 7 - PythonpygabrielView Answer on Stackoverflow