A += B Assignment Riddle in Python

Predict the output of these two expressions on Python console
- 
 On console
Geek=(1,2, [8,9])Geek[2]+=[3,4]Output: 
 
 Explanation:- 
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 successful.
- 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.
 
				 
					



