Chapter 6: Functions in Python
Function ka matlab hota hai — ek reusable block of code jo baar-baar call kiya ja sakta hai. Isme hum arguments de sakte hain, return value le sakte hain, aur code ko modular aur readable bana sakte hain.
Function Define Karna:
def greet():
print("Hello!")
Hello!
Function Call Karna:
greet()
Function with Parameters:
def greet(name):
print("Hello", name)
greet("Ravi")
Hello Ravi
Return Value:
def add(a, b):
return a + b
result = add(2, 3)
print(result)
5
General Mistakes:
def add(a, b):
a + b # ❌ Return nahi diya
print(add(2, 3)) # ❌ Output: None
Recursion in Python
Recursion matlab ek function khud ko call karta hai jab tak ek condition satisfy na ho jaaye. Isko step-by-step solve kiya jaata hai.
Structure of Recursive Function:
def function_name():
if base_condition:
return result
else:
return function_name()
Example: Countdown
def countdown(n):
if n == 0:
print("Liftoff!")
else:
print(n)
countdown(n - 1)
countdown(5)
5
4
3
2
1
Liftoff!
Rules of Recursion:
- Base case zaroori hota hai – ye stopping point hai.
- Har recursive call input ko chhota banata hai.
- Python me ~1000 depth tak hi jaa sakte ho.
Common Mistake:
def bad(n):
return bad(n-1) # ❌ No base case
bad(5) # ❌ RecursionError: maximum depth exceeded
Example: Factorial
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
print(factorial(5))
120
Advanced Example: Fibonacci
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)
print(fib(6))
8
Lambda Functions
Lambda function ek short anonymous function hoti hai, jisme sirf ek expression hota hai. Mostly quick calculations, filter/map me use hoti hai.
Syntax:
lambda arguments: expression
Simple Example:
double = lambda x: x * 2
print(double(4))
8
With map():
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x*x, nums))
print(squares)
[1, 4, 9, 16]
With filter():
nums = [1, 2, 3, 4, 5]
even = list(filter(lambda x: x % 2 == 0, nums))
print(even)
[2, 4]
With sorted():
students = [('A', 50), ('B', 70), ('C', 40)]
students.sort(key=lambda x: x[1])
print(students)
[('C', 40), ('A', 50), ('B', 70)]
Common Mistake:
lambda x, y: x + y # ❌ Not used or assigned
# ✔️ Correct:
add = lambda x, y: x + y
print(add(3, 4))
Lambda inside Function:
def multiplier(n):
return lambda x: x * n
times3 = multiplier(3)
print(times3(5))
15
Lambda vs def:
- Lambda: One-line, quick use, anonymous
- def: Multi-line, named, complex logic ke liye