Mutable vs Immutable in Python Explained Deeply #20 || Python ka Pitara || DeathCode - DeathCode

๐Ÿš€ Introduction: Why This Matters

"Python mein har data type ka ek apna memory behavior hota hai!"

"Kya aapne mutable aur immutable objects ka fark samjha hai?"

"Aaj hum discuss karenge kaise Python handle karta hai memory ko jab objects mutable ho ya immutable ho."

"Agar aap in concepts ko samajh lete ho, toh aap apne code ko na sirf optimize kar sakte ho, lekin usse efficient bhi bana sakte ho."


๐Ÿ”น 1. Immutable Objects: Basic

Immutable ka Matlab?

  • Immutable objects wo hote hain jinhe create hone ke baad change nahi kiya ja sakta.
  • Agar aap kisi immutable object ko modify karte ho, to actually ek naya object ban jata hai.

โœ… Examples

Integer:

a = 10
b = 10
print(id(a), id(b))  # Same id โ€“ Python ne same memory use ki

String:

x = "hello"
y = "hello"
print(id(x), id(y))  # Same id โ€“ Python ne string ko intern kiya

๐Ÿค” Kyu Immutable banaye jaate hain?

  • Memory Efficiency: Python same value ko baar-baar memory mein store nahi karta.
  • Hashing ke liye jaruri: Immutable object dictionary mein key ban sakte hain, mutable nahi.

๐Ÿง  Bonus Insight: Immutable object thread-safe hote hain โ€” multiple thread mein bhi data change nahi hota, no risk of clash.


๐Ÿ”น 2. Mutable Objects: Basic

Mutable ka Matlab?

  • Mutable objects wo hote hain jinhe aap direct modify kar sakte ho.
  • Inka memory location same rehta hai, par andar ka data change ho jata hai.

โœ… Examples

List:

list1 = [1, 2, 3]
list2 = list1
list1.append(4)
print(list2)  # [1, 2, 3, 4] โ€“ Same memory, data update ho gaya

Dictionary:

dict1 = {"a": 1}
dict2 = dict1
dict1["b"] = 2
print(dict2)  # {'a': 1, 'b': 2}

๐Ÿ”Ž Kyu Useful Hai Mutable?

  • Performance mein fast hote hain โ€” har baar naye object banane ki zarurat nahi.
  • Realtime data ko efficiently update kiya ja sakta hai.

๐Ÿ”น 3. Mutable vs Immutable: Fark Samjho

๐Ÿง  Memory ka Behaviour

  • Immutable: Update karne par naya object banta hai.
  • Mutable: Update karne par same object mein change hota hai.

๐Ÿ†” ID Comparison

x = [1, 2, 3]     # Mutable
y = [1, 2, 3]
print(id(x), id(y))  # Different IDs
 
a = "hello"       # Immutable
b = "hello"
print(id(a), id(b))  # Same ID

โšก Performance ka Impact

  • Immutable objects zyada memory le sakte hain (copy banta hai).
  • Mutable zyada memory efficient hote hain for large operations.

๐Ÿ”น 4. Optimization Techniques

โœ… Immutable Types Efficiently Kaise Use Karein

  • Jab data change nahi karna ho to tuple use karo instead of list.
  • Strings ko repeat karne par Python unhe intern karta hai:
a = "hello"
b = "hello"
print(id(a) == id(b))  # True โ€“ memory reuse

โœ… Mutable Types Ko Efficiently Kaise Use Karein

  • Avoid karo unnecessary object creation.
  • In-place updates karo:
lst = [1, 2, 3]
lst.append(4)  # Same list update ho gayi
  • Generators use karo jab large data process karna ho:
def gen_numbers():
    for i in range(1000000):
        yield i

๐Ÿ“ Memory Profile Check Karne ke Tools

import sys
a = [1, 2, 3]
print(sys.getsizeof(a))  # Memory size in bytes

๐Ÿ”น 5. Real-World Use Cases

โœ… Immutable Use Kahan Karein

  • Dictionary Keys: Immutable objects jaise tuple key ban sakte hain.
my_dict = {}
my_dict[("apple", "banana")] = "fruit"  # Tuple is hashable
  • Multithreading: Jab multiple thread ka use ho, immutable objects safe hote hain.

โœ… Mutable Use Kahan Karein

  • Large Data: List/dict jab baar-baar update karna ho.
  • Stateful Apps: Games ya apps jahan object ka state frequently change hota hai.

๐Ÿ”น 6. Advanced Internals

๐Ÿ’ก Python Ka Memory Handling

  • Reference Counting: Immutable objects multiple jagon se point ho sakte hain โ€“ space bachaate hain.
  • Copy-on-Write: Mutable objects ko jab modify kiya jata hai to nayi copy ban sakti hai.
import copy
 
lst1 = [1, 2, 3]
lst2 = copy.copy(lst1)
lst1.append(4)
print(lst2)  # [1, 2, 3] โ€“ old copy safe hai

๐Ÿงช Immutable Internals

  • Tuples ko memory mein ek block mein store kiya jata hai โ€“ fast access ke liye.
  • Strings ko Python intern karta hai โ€” same string baar-baar likhne pe ek hi memory use karta hai.

โœ… Conclusion: Key Takeaway

๐ŸŽ™๏ธ

"Aapne dekha kaise Python immutable aur mutable objects ko manage karta hai."

"Agar aapko apne code ko efficient banana hai, toh yeh concepts aapko internally samajhna zaroori hai."

"Agle video me hum discuss karenge Function Execution & Call Stack โ€“ kaise functions ka execution step-by-step hota hai."

ยฉ 2024 DeathCode. All Rights Reserved.