I read this medium article on python memory management. It led me down a little, python data types and memory rabbit hole. Thinking back to CS-101 class you learn about two kinds of objects, mutable and immutable. In python they are: Immutable Object : int, float, long, complex, string tuple, bool Mutable Object : list, dict, set, byte array, user-defined classes I'll be referencing CPython, not other implementations like PyPy. When investigating how things are working under the hood, id() is an invaluable. T his function returns the memory address of the object. No two objects have the same identity. But as you'll see, two variables can reference the same object. Along with id(), is returns whether variables reference the same object. This is different from the equality operator ==. Python variables work a lot like pointers in other languages. They refer to a value stored somewhere in memory. If it is a mutable object and the value changes the memory ...