Open In App
Related Articles

A += B Assignment Riddle in Python

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report
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.

Last Updated : 16 Jul, 2020
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads