What Does Mutable vs Immutable Mean?
In Python, mutable objects can be changed after creation, while immutable objects cannot be changed once created.
Definition
| Term | Meaning |
|---|---|
| Mutable | Can be changed in-place (content editable) |
| Immutable | Cannot be changed in-place (content fixed) |
Immutable Data Types
These types cannot be modified once assigned:
-
int -
float -
bool -
str -
tuple -
frozenset -
bytes
Example:
x = "hello"
x[0] = "H" # Error: 'str' object does not support item assignment
Mutable Data Types
These types can be changed after creation:
-
list -
dict -
set -
bytearray -
custom class(depending on implementation)
Example:
my_list = [1, 2, 3]
my_list[0] = 100 # Works
print(my_list) # Output: [100, 2, 3]
Why Does It Matter?
Mutable:
- Efficient when frequent changes are needed
- Useful for caching, collections, etc.
- Can have side effects if shared
Immutable:
- Safer to use in multithreading
-
Hashable (can be used as keys in
dictor elements inset) - Encourages pure function design
Identity vs Value Example
a = [1, 2, 3] # Mutable
b = a
b.append(4)
print(a) # Output: [1, 2, 3, 4] – a is also affected
x = "hello" # Immutable
y = x
y = y + " world"
print(x) # Output: "hello" – original not affected
Check with id():
x = "hello"
print(id(x))
x += " world"
print(id(x)) # New object created → different id
Summary Table
| Feature | Mutable | Immutable |
|---|---|---|
| Can be changed | Yes | No |
| Examples | list, dict, set |
int, str, tuple |
| Hashable | No (most) | Yes |
| Memory efficiency | Less (object reused) | More (new object each time) |
| Safer for sharing | No | Yes |
When to Use What?
- Use immutable for constants, dictionary keys, and safe shared data.
- Use mutable for collections that need modification (e.g., growing lists).

0 Comments:
Posting Komentar