I am still a learner myself, so do not take, what I’m about to say for gospel.
The way I understand this mutable and immutable topic has something to to do with the question if the actual memory location is changed or not. I am not too sure how Python works in detail but there is a great example in Java that illustrates this to some degree. If you look at the String class, Strings are immutable, which means, that once a string object has been created, this object (the data in memory) can not be changed. What can be changed is the reference to the object (reference variables vs value type variables). For example, if you create a new String object (String exampleStringA = “This is a sample sting”) what actually happens in the background is that a new object gets created that holds the data “This is a sample string” and then a reference to that object is put into exampleStringA. The data in the object can not be changed. You can make exampleStringA pointing to another object but that is about it. Therefore, there are some immutable classes, and I am sure there are some more out there other than the Java String class.
Anyway, I hope that kind of answers your question.
Oh yes, and if someone else is reading this and realizes that I am utterly wrong about what I just said, please please please, let me know.