- What are the design reasons of making Python strings immutable? How does it make programming easier?
- I'm used to mutable strings, like the ones in C. How am I supposed to program without mutable strings? Are there any best practices?
Python – Why are Python strings immutable? Best practices for using them
immutabilitypythonstring
Related Topic
- Python – Why does comparing strings using either ‘==’ or ‘is’ sometimes produce a different result
- Python – What are “named tuples” in Python
- Python – What does the ‘b’ character do in front of a string literal
- Python – UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xa0′ in position 20: ordinal not in range(128)
- Python – Why does python use ‘else’ after for and while loops
- Java – Why does this code using random strings print “hello world”
Best Answer
When you receive a string, you'll be sure that it stays the same. Suppose that you'd construct a
Foo
as below with a string argument, and would then modify the string; then theFoo
's name would suddenly change:With mutable strings, you'd have to make copies all the time to prevent bad things from happening.
It also allows the convenience that a single character is no different from a string of length one, so all string operators apply to characters as well.
And lastly, if strings weren't immutable, you couldn't reliably use them as keys in a
dict
, since their hash value might suddenly change.As for programming with immutable strings, just get used to treating them the same way you treat numbers: as values, not as objects. Changing the first letter of
name
would be