Predict the output of these two expressions on Python console
Look at the bytecode Python generates for the expression s[a] += b. It becomes clear how that happens.
It works step by step
- Put the value of s[a] on Top Of Stack(TOS).
- Perform TOS += b. This succeeds, If TOS refers to a mutable object. That is why appending item to list is successfull.
- Assign s[a] = TOS. This fails, If s is immutable. TypeError, because of tuple are immutable in above example.
Things to learn
- Putting mutable items in tuples is not a good idea.
- Augmented assignment is not an atomic operation — we just saw it throwing an exception after doing part of its job.
- Inspecting Python bytecode is not too difficult, and is often helpful to see what is going on under the hood.
- Look at the bytecode Python generates for the expression s[a] += b. It becomes clear how that happens.
- Important differences between Python 2.x and Python 3.x with examples
- Python | Sort Python Dictionaries by Key or Value
- Python | Set 4 (Dictionary, Keywords in Python)
- set add() in python
- Any & All in Python
- Use of min() and max() in Python
- max() and min() in Python
- zip() in Python
- SHA in Python
- SQL using Python | Set 1
- Python | a += b is not always a = a + b
- chr() in Python
- abs() in Python
- Python Set | pop()
- pow() in Python
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.