Function Execution & Call Stack in Python #21 || Python ka Pitara || DeathCode - DeathCode

🧠 Understanding Function Execution & Call Stack in Python


🚀 Why You Should Care

"Aapka Python code jab run hota hai, har function call ke saath kuch magic hota hai. Aaj hum samjhenge Function Execution ko, Call Stack kaise kaam karta hai, aur kaise Python har function call ko track karta hai."

"Hum step-by-step execution aur call stack ki internal working ko deep dive karenge, tak ki aap samajh sakein ke Python ka function call kaise work karta hai, aur kaise optimize kiya jaa sakta hai."


🔹 1. What is Function Execution? (Function ka Execution kya hota hai)

🔍 Samjho Function Execution ko:

  • Jab Python koi function call karta hai, tab wo function ka code run karta hai aur fir control wapas us jagah deta hai jahan se usse bulaya gaya tha.
  • Function call ka matlab hota hai: ek jagah se dusri jagah control shift karna — like ek chhoti si journey.

✅ Example:

def greet(name):
    print(f"Hello, {name}!")
 
greet("Alice")

Yahan greet("Alice") likhne se:

  • Python greet function ko call karta hai,
  • Wo line by line code execute karta hai,
  • Fir wapas us line ke baad ka code run karta hai.

🔹 2. The Call Stack Explained (Call Stack kya hota hai)

🧱 Call Stack Samjho Plate Stack ki Tarah:

  • Har baar jab koi function call hota hai, wo stack mein add hota hai (push hota hai).
  • Jab wo function complete ho jata hai, tab wo stack se nikal jata hai (pop hota hai).
  • Call stack help karta hai Python ko ye yaad rakhne mein ki next kya run karna hai.

✅ Example:

def functionA():
    functionB()
 
def functionB():
    print("Hello from functionB!")
 
functionA()

Execution ka flow:

  1. functionA() call hua → stack mein gaya
  2. Uske andar functionB() call hua → wo bhi stack mein gaya
  3. functionB() ne print kara → fir stack se hata diya gaya
  4. functionA() bhi complete ho gaya → wo bhi stack se hata diya gaya

🔍 Call Stack ka kaam:

  • Execution ka record rakhna
  • Har function ke variables aur data ko alag-alag store karna (scope maintain karna)

🔹 3. How Python Handles Function Calls (Function ka Process kaise chalta hai)

✅ Step-by-Step Breakdown:

  1. Function ko stack mein push karo.
  2. Function ka code execute karo.
  3. Jab complete ho jaye, stack se hata do aur control wapas de do.

✅ Code Example:

def add(a, b):
    result = a + b
    return result
 
def main():
    total = add(5, 7)
    print(total)
 
main()

Call Stack Execution:

  • main() call → stack mein gaya
  • add(5, 7) call → stack mein gaya
  • add() ka result mila → stack se hata diya
  • print() call hua → stack mein gaya
  • Print complete → main() bhi complete → sab stack se hata diya gaya

🔁 Recursion ke Case mein:

  • Har recursive call ek naye frame ke saath stack mein jata hai.
  • Agar base case nahi ho ya limit cross ho jaye → RecursionError
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)
 
factorial(5)

Yahan 5 se 0 tak calls stack mein jati hain, fir ek-ek karke return hoti hain.


🔹 4. Stack Frames (Har Function ke liye ek Box)

📦 Stack Frame kya hota hai?

  • Jab function call hota hai, Python ek stack frame banata hai:

    • Function ke arguments
    • Function ke andar ke variables
    • Return hone ki location

✅ Example:

def multiply(a, b):
    result = a * b
    return result

Agar multiply(2, 3) call hota hai, to stack frame me hota hai:

  • a = 2, b = 3
  • result = 6
  • Return address: jahan se multiply ko bulaya gaya tha

🧠 Kyu Important Hai?

  • Har function ke variables safe rehte hain — alag-alag frame mein
  • Jab kaam ho jaye to frame clean ho jata hai → efficient memory usage

🔹 5. Stack Overflow and Recursion Limits (Stack ka Fatna 😬)

🚨 Stack Overflow kya hota hai?

  • Jab recursive function bahut zyada baar call hota hai aur Python ka call stack limit cross kar deta hai → tab aata hai RecursionError

✅ Example:

def infinite_recursion():
    infinite_recursion()
 
infinite_recursion()

Ye program kabhi rukega nahi — stack barte jaayega → RecursionError aayega

🛡️ Kaise Bachein?

  • Har recursive function mein base case hona chahiye
  • Bahut zyada depth ho to loop (iteration) ka use karo
  • Python mein by default recursion depth ~1000 hoti hai (sys.getrecursionlimit() se check kar sakte ho)

📌 Summary & Takeaways

"Aaj humne deep dive kiya Function Execution aur Call Stack ko samajhne mein, jaise Python apne function calls ko track karta hai, stack frames kaise kaam karte hain, aur kaise recursion ko handle kiya jata hai."

"Agar aap Python ki execution ko samajhna chahte ho aur optimize karna chahte ho, toh yeh concept bohot zaroori hai!"

© 2024 DeathCode. All Rights Reserved.