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
dict
or 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:
Post a Comment