this post was submitted on 25 Sep 2026
58 points (91.4% liked)

Python

8060 readers
1 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

๐Ÿ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

๐Ÿ Python project:
๐Ÿ’“ Python Community:
โœจ Python Ecosystem:
๐ŸŒŒ Fediverse
Communities
Projects
Feeds

founded 3 years ago
MODERATORS
 

A hard exercise to help build the right mental model for Python data.

The โ€œSolutionโ€ link visualizes execution and reveals whatโ€™s actually happening using ๐—บ๐—ฒ๐—บ๐—ผ๐—ฟ๐˜†_๐—ด๐—ฟ๐—ฎ๐—ฝ๐—ต: https://github.com/bterwijn/memory_graph

you are viewing a single comment's thread
view the rest of the comments
[โ€“] bterwijn@programming.dev 3 points 1 week ago* (last edited 1 week ago) (1 children)

I think the confusion comes from a += b being equivalent to a = a + b for immutable types, so some people generalize that incorrectly to mutable types too. Otherwise I think it's pretty clear a += b mutates a, and a = a + b first computes a + b and then reassigns that to a so that its identity changes, just like in c = a + b.

If you implement these operations in a class you have to implement each dunder, __iadd__(self, other) and __add__(self, other) separately, same thing in C++.

[โ€“] sukhmel@programming.dev 1 points 1 week ago (1 children)

It is only clear if you already have a model of how labels work in Python and while it is understandable to me now, I wouldn't say this is anything I would expect

Then again, shadowing variables is allowed in other languages and is also a source of confusion and mistakes at times

[โ€“] bterwijn@programming.dev 1 points 6 days ago (1 children)

The point of the visualization at the Solution link is precisely to help people get the right model of how labels and the data model in general works in Python. See the Explanation link for more details.

[โ€“] sukhmel@programming.dev 1 points 6 days ago (1 children)

Yeah, the visualisation is great, that is for sure

[โ€“] bterwijn@programming.dev 1 points 6 days ago

Thanks a lot, I hope it can bring much value for you.