I didnt make it past the long list of id() misuses, but its a rookie mistake to confuse referential equality with value equality, and when doing so youre in for a bad time.
The point is not simply about the existence of a separate concept of object identity; it's about the details in the circumstances in which Python creates separate-but-equal objects rather than reusing the same one.