Why are Python strings immutable?
There are several advantages.
One is performance: knowing that a string is immutable makes it easy to lay it out at construction time — fixed and unchanging storage requirements. This is also one of the reasons for the distinction between tuples and lists. This also allows the implementation to safely reuse string objects. For example, the CPython implemenation uses pre-allocated objects for single-character strings, and usually returns the original string for string operations that doesn’t change the content.
The other is that strings in Python are considered as elemental
as numbers. No amount of activity will change the value 8 to anything else, and in Python, no amount of activity will change the string “eight” to anything else.
CATEGORY: general design

Comment:
The use of immutable data structures (strings, tuples) enforce a non-side-effects style of programming. In a function, you receive data, create new objects, and return, not modifying things "in place". Well, side effects must be done some time, like switching through states in a object, but it is better done in the "extremes" of your logic. It is a whole philosophy to make code more composable and independent of context.
Posted by Eduardo O Padoan (2006-11-16)