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.
  • is checks 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: πŸ“Š

PropertyMutableImmutable
Can modify?Yes (in-place)No (new object on change)
Memory addressSame after modificationChanges after “modification”
Exampleslist, dict, setint, str, tuple
Use CaseDynamic collectionsConstants, safe data

Export to Sheets

Similar Posts

  • TheΒ Fractions module

    The Fractions module in Python is a built-in module that provides support for rational number arithmetic. It allows you to work with fractions (like 1/2, 3/4, etc.) exactly, without the precision issues that can occur with floating-point numbers. What Problems Does It Solve? Problem with Floating-Point Numbers: python # Floating-point precision issue print(0.1 + 0.2) # Output:…

  • Functions Returning Functions

    Understanding Functions Returning Functions In Python, functions can return other functions, which is a powerful feature of functional programming. Basic Example python def outer(): def inner(): print(“Welcome!”) return inner # Return the inner function (without calling it) # Calling outer() returns the inner function f = outer() # f now refers to the inner function…

  • Finally Block in Exception Handling in Python

    Finally Block in Exception Handling in Python The finally block in Python exception handling executes regardless of whether an exception occurred or not. It’s always executed, making it perfect for cleanup operations like closing files, database connections, or releasing resources. Basic Syntax: python try: # Code that might raise an exception except SomeException: # Handle the exception else:…

  • Case Conversion Methods in Python

    Case Conversion Methods in Python (Syntax + Examples) Python provides several built-in string methods to convert text between different cases (uppercase, lowercase, title case, etc.). Below are the key methods with syntax and examples: 1. upper() β€“ Convert to Uppercase Purpose: Converts all characters in a string to uppercase.Syntax: python string.upper() Examples: python text = “Hello, World!”…

Leave a Reply

Your email address will not be published. Required fields are marked *