Python - The difference of mutable and immutable objects

In Python, all are objects. An integer, float, string, list, tuple are objects and a class and function are also objects. Python objects are immutable or mutable.

Immutable object

  • bool
  • int
  • float
  • string
  • tuple
  • frozenset

Mutable object

  • list
  • dictionary
  • set

A mutable object can be (unexpectedly) changed but an immutable object doesn't change. 1 is 1, (5, 7) is (5, 7).

Immutable object

A tuple can't change because it is immutable. Integers are immutable so variables assigned the same value have the same ids.

a = 1
print(id(a))  # 4300839120
print(id(1))  # 4300839120

a = 3
print(id(a))  # 4300839184
print(id(3))  # 4300839184

Mutable object

A list can be modified because it is mutable. So it has the append() or pop() methods.

a = [1, 2]
print(id(a))  # 4491350400

a.append(3)
print(id(a))  # 4491350400

The id doesn't change by appending. An immutable object is an object that can change its contents with keeping identity (memory address). Roughly, an immutable object is simply a box or container. Even if contents in a box change, the box itself doesn't change.

Python Tips

Python Tutorial