Mutable vs. Immutable Objects in Python ππ
Mutable vs. Immutable Objects in Python ππ
In Python, mutability determines whether an object’s value can be changed after creation. This is crucial for understanding how variables behave. π€
Immutable Objects π
- Cannot be modified once created. Any “change” creates a new object. π
- Types:
int,float,str,bool,tuple,frozenset,bytes,NoneType.
Example 1: Strings (Immutable) π¬
Python
s = "hello"
print(id(s)) # Original memory address: e.g., 140245678945600
s += " world" # "Modification" creates a NEW string
print(id(s)) # New address: e.g., 140245678946880 (different!)
Example 2: Tuples (Immutable) π¦
Python
t = (1, 2, [3, 4])
print(t) # (1, 2, [3, 4])
# t[0] = 99 # TypeError: tuple does not support item assignment
# But note: The inner list is mutable!
t[2].append(5) # The tuple's structure hasn't changed (still holds same list)
print(t) # (1, 2, [3, 4, 5])
Mutable Objects π
- Can be modified in-place without creating a new object. βοΈ
- Types:
list,dict,set,bytearray.
Example 1: Lists (Mutable) π
Python
colors = ["red", "green"]
print(id(colors)) # Original address: e.g., 140245678947392
colors.append("blue") # Modified IN-PLACE
print(colors) # ["red", "green", "blue"]
print(id(colors)) # Same address: 140245678947392
Example 2: Dictionaries (Mutable) π
Python
person = {"name": "Alice", "age": 30}
print(id(person)) # Original address: e.g., 140245678946112
person["age"] = 31 # Change value in-place
person["city"] = "Paris" # Add new key-value pair
print(person) # {'name': 'Alice', 'age': 31, 'city': 'Paris'}
print(id(person)) # Same address: 140245678946112
Key Implications: π€
Equality vs. Identity βοΈπ
==checks if values are equal.ischecks if they refer to the exact same object in memory.
Python
a = [1, 2] # Mutable
b = [1, 2] # Different object
print(a == b) # True (same value)
print(a is b) # False (different memory)
x = "abc" # Immutable
y = "abc" # Python may reuse same object (interning)
print(x is y) # Often True (due to interning for small, immutable objects)
Function Arguments π
- Mutable objects passed to functions can be changed globally. π
- Immutable objects behave like “copies” inside functions. π
Python
def update_list(lst):
lst.append(99) # Affects original list
def try_update_string(s):
s += "!" # Creates new string (no effect outside)
my_list = [1, 2]
my_str = "Hello"
update_list(my_list)
try_update_string(my_str)
print(my_list) # [1, 2, 99] (changed)
print(my_str) # "Hello" (unchanged)
Summary Table: π
| Property | Mutable | Immutable |
| Can modify? | Yes (in-place) | No (new object on change) |
| Memory address | Same after modification | Changes after “modification” |
| Examples | list, dict, set | int, str, tuple |
| Use Case | Dynamic collections | Constants, safe data |
Export to Sheets