1 min read

Python: Mutable vs. Immutable Data Types

In Python, data types can be classified into two categories based on their mutability:

1. Mutable Data Types:

  • Definition: Mutable data types can be changed after they are created.  
  • Examples: Lists, dictionaries, and sets.  
  • Behavior: When you modify a mutable object, you're actually changing the object itself.  

Example:

my_list = [1, 2, 3]
my_list[0] = 10  # Modifying the first element
print(my_list)  # Output: [10, 2, 3]

2. Immutable Data Types:

  • Definition: Immutable data types cannot be changed once they are created.  
  • Examples: Numbers (integers, floats), strings, and tuples.  
  • Behavior: When you modify an immutable object, a new object is created with the modified value.  

Example:

my_string = "hello"
new_string = my_string + " world"
print(my_string)  # Output: "hello"
print(new_string)  # Output: "hello world"

Key Differences:

FeatureMutable Data TypesImmutable Data Types
ChangeabilityCan be changedCannot be changed
Memory AllocationModified in-placeNew object created for modification
ExamplesLists, dictionaries, setsNumbers, strings, tuples

Why the Distinction Matters:

  • Efficiency: Immutable objects can be more efficient in certain scenarios, as they can be cached and reused.
  • Predictability: Immutable objects are easier to reason about, as their values remain constant.
  • Safety: Immutable objects can help prevent unintended side effects in complex programs.  

Understanding the difference between mutable and immutable data types is essential for writing clean, efficient, and reliable Python code.