📑 Table of Contents — किसी भी topic पर सीधे जाएँ
Function क्या है? — Modular Programming का आधार
🏗️ Top-Down Approach — Structure
| Level | क्या होता है |
|---|---|
| 1. Main Problem | पूरा task — जैसे "Calculator बनाओ" |
| 2. Sub-Problems | Add, Subtract, Multiply, Divide में बाँटना |
| 3. Functions | हर sub-problem को एक function में लिखना |
| 4. Integration | main() सबको जोड़कर चलाता है |
✅ Functions के फायदे
- Reusability: एक बार लिखो, कहीं भी बार-बार उपयोग करो।
- Readability: बड़ा code छोटे, समझने लायक टुकड़ों में।
- Debugging आसान: गलती किस function में है, ढूँढना आसान।
- Team Collaboration: अलग-अलग functions अलग लोग लिख सकते हैं।
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def main():
x, y = 10, 4
print("Sum:", add(x, y))
print("Difference:", subtract(x, y))
main()Difference: 6
def, Parameters व Return — Function बनाना व चलाना
Function Call Flow — Input से Output तक
# 1. Bina parameter, bina return
def greet():
print("Hello!")
# 2. Parameter ke saath, bina return
def show_sum(a, b):
print("Sum =", a + b)
# 3. Parameter + return
def multiply(a, b):
return a * b
# 4. Multiple return values (tuple)
def calc(a, b):
return a+b, a-b, a*b
greet()
show_sum(3, 4)
print(multiply(5, 6))
s, d, p = calc(10, 3)
print(s, d, p)Sum = 7
30
13 7 30
def display():
print("Kuch print kiya")
result = display()
print("Return value:", result)Return value: None
Local व Global Variables — Scope का खेल
Scope — Global Program के बाहर, Local अंदर बंद
x = 100 # global
def test():
x = 50 # local — alag variable hai!
print("Andar x =", x)
test()
print("Bahar x =", x)Bahar x = 100
🔑 global Keyword — जब सच में बदलना हो
count = 0
def increment():
global count # bina isake UnboundLocalError aayega
count += 1
print("Andar:", count)
increment()
increment()
print("Bahar:", count)Andar: 2
Bahar: 2
count += 1 लिखते ही Python सोचता है "यह एक नया local variable बना रहा है", और चूँकि उसे अभी value नहीं मिली (right side में पढ़ने की कोशिश), UnboundLocalError आती है!Default, Keyword व *args/**kwargs — Flexible Functions
1️⃣ Default Parameters
def greet(name="Guest"):
print("Namaste,", name)
greet("Aditya")
greet()Namaste, Guest
2️⃣ Keyword Arguments
def student(name, age):
print(name, "is", age, "years old")
student(age=18, name="Ravi") # order ulta, phir bhi sahi!3️⃣ *args — कई Positional Values
def total(*numbers):
print("Mile:", numbers) # tuple
print("Sum:", sum(numbers))
total(10, 20, 30)
total(5, 15, 25, 35)Sum: 60
Mile: (5, 15, 25, 35)
Sum: 80
4️⃣ **kwargs — कई Keyword Values
def info(**details):
for key, value in details.items():
print(key, "=", value)
info(name="Priya", age=21, city="Lucknow")age = 21
city = Lucknow
DocStrings — Function की Official Documentation
__doc__ या help() से पढ़ते हैं।def add(a, b):
"""Yah function do numbers ko jodta hai."""
return a + b
print(add.__doc__)
print(add(3, 4))7
func.__doc__ या help(func)। Comments (#) से अलग — DocString structured documentation है।Recursion — Function जो खुद को बुलाता है
Recursion Call Stack — factorial(4)
def factorial(n):
if n == 0 or n == 1: # BASE CASE — yahin rukega
return 1
else:
return n * factorial(n - 1) # khud ko call kar raha hai
print(factorial(5))def fibo(n):
if n <= 1:
return n
return fibo(n-1) + fibo(n-2)
for i in range(7):
print(fibo(i), end=" ")⚖️ Recursion vs Loop
| आधार | Recursion | Loop |
|---|---|---|
| तरीका | Function खुद को call करे | while/for से दोहराव |
| Memory | ज़्यादा (हर call स्टैक में) | कम |
| Code | छोटा व elegant | कभी-कभी लंबा |
| कब उपयोग | Tree, factorial जैसी natural recursive समस्याएँ | साधारण repetition |
Built-in Functions — Python में पहले से मौजूद Tools
| Function | काम | Example |
|---|---|---|
| len() | Length/size | len("Hi") → 2 |
| abs() | Absolute value | abs(-8) → 8 |
| round() | Round off | round(3.567, 2) → 3.57 |
| pow() | Power | pow(2,5) → 32 |
| sum() | Sum of iterable | sum([1,2,3]) → 6 |
| sorted() | Sorted नई list | sorted([3,1,2]) → [1,2,3] |
| type() | Data type | type(5) → int |
| isinstance() | Type check T/F | isinstance(5,int) → True |
| divmod() | Quotient व remainder | divmod(17,5) → (3,2) |
| eval() | String expression चलाना | eval("2+3") → 5 |
data = [10, 20, 30, 40] print(sum(data)) print(sorted(data, reverse=True)) print(all(x > 5 for x in data)) # sab true hain? print(any(x > 35 for x in data)) # koi ek true hai? print(divmod(17, 5))
[40, 30, 20, 10]
True
True
(3, 2)
Modules व Import — Python की Ready-Made Libraries
import से लाओ, फिर उपयोग करो। खुद से लिखने की ज़रूरत नहीं!🧮 math Module
import math print(math.sqrt(49)) # 7.0 print(math.factorial(5)) # 120 print(math.ceil(3.2)) # 4 (upar) print(math.floor(3.9)) # 3 (neeche) print(math.pi) # 3.14159...
120
4
3
3.141592653589793
🎲 random Module
import random print(random.randint(1, 10)) # 1-10 ke beech koi number print(random.choice(["A","B","C"])) # list se koi ek
B
🕒 datetime Module
from datetime import date
today = date.today()
print("Aaj ki date:", today)
birth_year = 2005
age = today.year - birth_year
print("Age:", age)Age: 21
📥 Import के 3 तरीके
import math # poora module — math.sqrt() from math import sqrt # sirf ek function — seedha sqrt() import math as m # chhota naam — m.sqrt() print(math.sqrt(16)) print(sqrt(25)) print(m.sqrt(36))
5.0
6.0
🎯 Output-Based Questions — Functions पर Tricky सवाल
Q1. Default vs Passed Argument
def power(base, exp=2):
return base ** exp
print(power(3))
print(power(3, 3))27
← पहले call में exp default (2) उपयोग हुआ; दूसरे में explicitly 3 दिया गया।
Q2. Local Variable का Scope
def show():
msg = "Hello"
print(msg)
show()
print(msg)NameError: name 'msg' is not defined
← msg local variable है, function के बाहर मौजूद नहीं।
Q3. Return न होने पर
def test():
x = 5
result = test()
print(result)← कोई return नहीं है, इसलिए function automatically None देता है।
Q4. *args का Behavior
def total(*nums):
return sum(nums)
print(total(1, 2, 3, 4))
print(total())0
← *args कोई भी संख्या में values ले सकता है, यहाँ तक कि 0 भी (खाली tuple, sum=0)।
Q5. global के बिना Error
n = 5
def change():
n = n + 1
print(n)
change()← n = n+1 लिखते ही n local बन गया, पर right side में उसकी value अभी तय नहीं — error।
Q6. Recursion Trace
def f(n):
if n == 0:
return 0
return n + f(n-1)
print(f(4))← f(4)=4+f(3)=4+3+f(2)=4+3+2+f(1)=4+3+2+1+f(0)=4+3+2+1+0=10।
Q7. **kwargs Dictionary
def info(**data):
print(type(data))
print(data)
info(x=1, y=2){'x': 1, 'y': 2}
← **kwargs हमेशा dictionary में collect होता है।
Q8. Keyword Argument Order
def sub(a, b):
return a - b
print(sub(b=3, a=10))← Keyword arguments में order मायने नहीं रखता — नाम से match होता है।
💻 Practice Programs — Functions के असली उपयोग
Program 1 — Prime Check Function (Chapter 2 जैसा logic, अब function में)
def is_prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
for num in range(2, 20):
if is_prime(num):
print(num, end=" ")Program 2 — Recursive Sum of Digits
def digit_sum(n):
if n == 0:
return 0
return n % 10 + digit_sum(n // 10)
print(digit_sum(1234))Program 3 — Simple Interest Calculator (Function + Default)
def simple_interest(p, r, t=1): # t ka default 1 saal
return (p * r * t) / 100
print(simple_interest(5000, 8, 3))
print(simple_interest(5000, 8)) # 1 saal default se400.0
Program 4 — GCD Function (Recursion से)
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
print(gcd(48, 18))Program 5 — Multiple Marks Average (*args से)
def average(*marks):
if len(marks) == 0:
return 0
return sum(marks) / len(marks)
print(average(85, 90, 78, 92))
print(average(70, 60))65.0
Program 6 — Circle Calculator (math module से)
import math
def circle_area(r):
return round(math.pi * r ** 2, 2)
def circle_circumference(r):
return round(2 * math.pi * r, 2)
radius = 7
print("Area:", circle_area(radius))
print("Circumference:", circle_circumference(radius))Circumference: 43.98
Program 7 — Student Profile Card (**kwargs)
def profile(name, **extra):
print("Name:", name)
for key, val in extra.items():
print(f"{key}: {val}")
profile("Aditya", city="Lucknow", course="Python", batch=2026)city: Lucknow
course: Python
batch: 2026
Summary — Quick Revision (Exam से पहले पढ़ें)
- Function = reusable code block; Modular Programming = बड़े problem को functions में तोड़ना; Top-Down = पहले design, फिर टुकड़े।
- def से function बनता है; parameters से values अंदर आती हैं; return optional — न हो तो None।
- Local variable function तक सीमित; Global पूरे program में; बदलने के लिए global keyword ज़रूरी (नहीं तो UnboundLocalError)।
- Default parameter — missing argument का fallback; Keyword argument — नाम से, order मायने नहीं; *args — tuple में extra positional; **kwargs — dict में extra keyword।
- DocString """triple quotes""" में —
func.__doc__याhelp()से पढ़ते हैं। - Recursion = function खुद को call करे; base case ज़रूरी वरना RecursionError; Factorial व Fibonacci classic examples।
- Built-in functions बिना import (len, sum, sorted, divmod...); Modules import करके (math, random, datetime)।
- Import के 3 तरीके: import module; from module import func; import module as alias।
Model Questions — 50 MCQs + 15 Theory Questions
❓ A. Multiple Choice Questions (50)
| # | प्रश्न |
|---|---|
| 1 | Function define करने का keyword है — (a) function(b) def(c) fun(d) define ✔ सही उत्तर: (b) defdef function_name(): से शुरुआत होती है। |
| 2 | बड़े program को छोटे functions में तोड़ना कहलाता है — (a) Recursion(b) Modular Programming(c) Looping(d) Debugging ✔ सही उत्तर: (b) Modular ProgrammingCode readable व reusable बनता है। |
| 3 | Function को value वापस भेजने के लिए — (a) print(b) return(c) send(d) output ✔ सही उत्तर: (b) returnयह function को terminate कर देता है। |
| 4 | बिना return वाला function क्या देता है? (a) 0(b) खाली string(c) None(d) Error ✔ सही उत्तर: (c) NoneAutomatic default। |
| 5 | Function एक साथ कई values return कर सकता है — किस रूप में? (a) List(b) Tuple(c) Dictionary(d) Set ✔ सही उत्तर: (b) Tuplereturn a, b, c से tuple बनता है। |
| 6 | Function के अंदर बना variable कहलाता है — (a) Global(b) Local(c) Static(d) Public ✔ सही उत्तर: (b) Localसिर्फ उसी function तक सीमित। |
| 7 | Global variable को function के अंदर modify करने के लिए — (a) local keyword(b) global keyword(c) static keyword(d) कुछ नहीं चाहिए ✔ सही उत्तर: (b) global keywordबिना इसके UnboundLocalError आएगी। |
| 8 | Local व global variable का नाम same हो तो — (a) Error आती है(b) Local जीतता है function के अंदर(c) Global जीतता है(d) दोनों merge हो जाते हैं ✔ सही उत्तर: (b) Local जीतता हैFunction के अंदर local प्राथमिकता पाता है। |
| 9 | n=n+1 (n global है) बिना global keyword के देगा — (a) सही output(b) UnboundLocalError(c) 0(d) None ✔ सही उत्तर: (b) UnboundLocalErrorPython इसे नया local variable मान लेता है। |
| 10 | Missing argument के लिए fallback value देने वाला — (a) Keyword argument(b) Default parameter(c) *args(d) global ✔ सही उत्तर: (b) Default parameterdef greet(name="Guest") जैसा। |
| 11 | Keyword arguments में क्या मायने नहीं रखता? (a) Value(b) Type(c) Order(d) Name ✔ सही उत्तर: (c) Orderनाम से match होता है, position से नहीं। |
| 12 | *args किस रूप में values collect करता है? (a) List(b) Tuple(c) Dictionary(d) Set ✔ सही उत्तर: (b) TupleExtra positional arguments। |
| 13 | **kwargs किस रूप में values collect करता है? (a) List(b) Tuple(c) Dictionary(d) String ✔ सही उत्तर: (c) DictionaryExtra keyword arguments। |
| 14 | Argument order का सही क्रम — (a) *args → positional → default → **kwargs(b) positional → default → *args → **kwargs(c) **kwargs → *args → default(d) कोई क्रम नहीं ✔ सही उत्तर: (b) positional → default → *args → **kwargsयह Python का fixed नियम है। |
| 15 | DocString लिखी जाती है — (a) # से(b) // से(c) triple quotes में(d) <!-- --> में ✔ सही उत्तर: (c) triple quotes में""" या ''' — function की पहली line पर। |
| 16 | DocString को access करने के लिए attribute — (a) __init__(b) __doc__(c) __str__(d) __name__ ✔ सही उत्तर: (b) __doc__func.__doc__ या help(func)। |
| 17 | Function खुद को call करे तो कहलाता है — (a) Nested function(b) Recursion(c) Iteration(d) Loop function ✔ सही उत्तर: (b) Recursionजब तक base case पूरी न हो। |
| 18 | Recursion में रुकने की शर्त कहलाती है — (a) Loop condition(b) Base case(c) Stop case(d) End point ✔ सही उत्तर: (b) Base caseबिना इसके infinite recursion होगी। |
| 19 | Base case न हो तो क्या होगा? (a) कुछ नहीं(b) RecursionError(c) SyntaxError(d) function रुक जाएगा ✔ सही उत्तर: (b) RecursionErrorInfinite recursion — stack overflow जैसा। |
| 20 | factorial(4) का सही मान — (a) 24(b) 16(c) 12(d) 4 ✔ सही उत्तर: (a) 241×2×3×4। |
| 21 | Fibonacci series का अगला पद: 0,1,1,2,3,5,? (a) 6(b) 7(c) 8(d) 9 ✔ सही उत्तर: (c) 83+5=8, पिछले दो का योग। |
| 22 | len("Python") का output — (a) 5(b) 6(c) 7(d) Error ✔ सही उत्तर: (b) 6P-y-t-h-o-n = 6 characters। |
| 23 | all([True, 1, 5]) का output — (a) True(b) False(c) 5(d) Error ✔ सही उत्तर: (a) Trueसभी values truthy हैं। |
| 24 | any([0, False, 3]) का output — (a) True(b) False(c) 0(d) 3 ✔ सही उत्तर: (a) True3 truthy है — any() में एक भी काफी। |
| 25 | divmod(17, 5) का output — (a) (3, 2)(b) (2, 3)(c) 3.4(d) 17 ✔ सही उत्तर: (a) (3, 2)quotient व remainder का tuple। |
| 26 | eval("2+3*4") का output — (a) 20(b) 14(c) "2+3*4"(d) Error ✔ सही उत्तर: (b) 14String expression को evaluate करता है। |
| 27 | math module से square root निकालने का function — (a) math.root()(b) math.sqrt()(c) math.square()(d) sqrt() ✔ सही उत्तर: (b) math.sqrt()import math के बाद। |
| 28 | math.ceil(3.2) का output — (a) 3(b) 4(c) 3.2(d) 3.0 ✔ सही उत्तर: (b) 4ऊपर की ओर round करता है। |
| 29 | math.floor(3.9) का output — (a) 4(b) 3(c) 3.9(d) 4.0 ✔ सही उत्तर: (b) 3नीचे की ओर round करता है। |
| 30 | random module से 1-10 के बीच random number — (a) random.random()(b) random.int(1,10)(c) random.randint(1,10)(d) random.choice(10) ✔ सही उत्तर: (c) random.randint(1,10)दोनों सीमाएँ inclusive होती हैं। |
| 31 | आज की date निकालने के लिए — (a) datetime.now()(b) date.today()(c) time.today()(d) date.now() ✔ सही उत्तर: (b) date.today()from datetime import date के बाद। |
| 32 | पूरा module import करने का syntax — (a) from math(b) import math(c) include math(d) using math ✔ सही उत्तर: (b) import mathफिर math.function() से उपयोग। |
| 33 | सिर्फ specific function import करने का तरीका — (a) import math.sqrt(b) from math import sqrt(c) math import sqrt(d) sqrt from math ✔ सही उत्तर: (b) from math import sqrtअब सीधे sqrt() उपयोग होगा। |
| 34 | Module को छोटा नाम देने के लिए keyword — (a) short(b) alias(c) as(d) rename ✔ सही उत्तर: (c) asimport math as m। |
| 35 | Positional parameter का उदाहरण — (a) def f(a=5)(b) def f(a, b)(c) def f(*a)(d) def f(**a) ✔ सही उत्तर: (b) def f(a, b)Order से values आती हैं। |
| 36 | student(age=18, name="Ravi") में यह arguments कहलाते हैं — (a) Positional(b) Keyword(c) Default(d) VarArgs ✔ सही उत्तर: (b) Keywordनाम से value दी गई है। |
| 37 | Function को call करने पर दी गई values कहलाती हैं — (a) Parameters(b) Arguments(c) Return values(d) Variables ✔ सही उत्तर: (b) ArgumentsParameters definition में, arguments call में। |
| 38 | Function के अंदर function call करना कहलाता है — (a) Recursion(b) Nested function call(c) Loop(d) Module ✔ सही उत्तर: (b) Nested function callजैसे cube(n) के अंदर square(n) call होना। |
| 39 | Recursion vs Loop — किसमें ज़्यादा memory लगती है? (a) Loop(b) Recursion(c) दोनों बराबर(d) कोई नहीं ✔ सही उत्तर: (b) Recursionहर call स्टैक में जमा होती है। |
| 40 | is_even(num) जैसा function क्या return करता है? (a) संख्या(b) Boolean (True/False)(c) String(d) None ✔ सही उत्तर: (b) Booleannum % 2 == 0 का result। |
| 41 | help(function_name) क्या दिखाता है? (a) Function का code(b) DocString/documentation(c) Function की memory(d) Error अगर हो ✔ सही उत्तर: (b) DocString/documentation__doc__ का ही एक और तरीका है। |
| 42 | एक function कितनी बार call हो सकता है? (a) सिर्फ एक बार(b) जितनी बार चाहें(c) सिर्फ दो बार(d) कभी नहीं ✔ सही उत्तर: (b) जितनी बार चाहेंयही reusability का फायदा है। |
| 43 | Top-Down approach में पहले क्या design होता है? (a) Sub-modules(b) Main logic/structure(c) Testing(d) Comments ✔ सही उत्तर: (b) Main logic/structureफिर उसे sub-parts में तोड़ा जाता है। |
| 44 | sorted([3,1,2], reverse=True) का output — (a) [1,2,3](b) [3,2,1](c) [3,1,2](d) Error ✔ सही उत्तर: (b) [3,2,1]reverse=True से descending order। |
| 45 | pow(2, 5) का output — (a) 10(b) 25(c) 32(d) 7 ✔ सही उत्तर: (c) 322⁵ = 32। |
| 46 | math.pi का approximate मान — (a) 3.14(b) 2.71(c) 1.41(d) 6.28 ✔ सही उत्तर: (a) 3.14पूरा मान 3.14159265... |
| 47 | GCD निकालने के लिए famous algorithm — (a) Bubble sort(b) Euclidean algorithm(c) Binary search(d) Linear search ✔ सही उत्तर: (b) Euclidean algorithmgcd(a,b) = gcd(b, a%b) recursive pattern। |
| 48 | def f(a, b=5, *args, **kwargs): में b है — (a) Positional(b) Default parameter(c) *args(d) **kwargs ✔ सही उत्तर: (b) Default parameterb=5 fallback value देता है। |
| 49 | Custom module (mymath.py) import करने का तरीका — (a) import mymath(b) load mymath(c) include mymath(d) require mymath ✔ सही उत्तर: (a) import mymathबिना .py extension के। |
| 50 | Function की सबसे बड़ी खूबी — (a) Speed बढ़ाना(b) Code reusability(c) Memory बचाना(d) Syntax कम करना ✔ सही उत्तर: (b) Code reusabilityएक बार लिखो, बार-बार उपयोग करो। |
📝 B. 15 Theory Questions (Short Answers)
- Function क्या है? इसके फायदे लिखिए।Function reusable code का block है जो specific task करता है। फायदे — code reusability, readability, आसान debugging, team collaboration।
- Modular Programming व Top-Down Approach समझाइए।Modular Programming = बड़े program को छोटे functions में तोड़ना; Top-Down = पहले main design सोचना, फिर उसे sub-problems (functions) में divide करना।
- Parameter व Argument में अंतर बताइए।Parameter function definition में दिया नाम है (def f(a, b):); Argument function call के समय दी गई असली value है (f(5, 10))।
- return statement का क्या काम है? बिना return क्या होता है?return function को terminate करके value वापस caller को भेजता है। बिना return function automatically None देता है।
- Local व Global variable में अंतर बताइए।Local variable function के अंदर बनता है, सिर्फ वहीं access होता है; Global variable function के बाहर बनता है, पूरे program में access होता है।
- global keyword की ज़रूरत कब पड़ती है?जब function के अंदर किसी global variable की value बदलनी हो — बिना global keyword के Python उसे नया local variable मान लेता है और UnboundLocalError देता है।
- Default parameter व Keyword argument में अंतर बताइए।Default parameter definition में fallback value देता है (def f(x=5)); Keyword argument call के समय नाम से value देता है (f(x=10)) — order irrelevant हो जाता है।
- *args और **kwargs में अंतर उदाहरण सहित लिखिए।*args variable संख्या के positional arguments को tuple में लेता है — def f(*args)। **kwargs variable संख्या के keyword arguments को dictionary में लेता है — def f(**kwargs)।
- DocString क्या है? कैसे लिखते व पढ़ते हैं?Function/class की शुरुआत में triple quotes (""" """) में लिखी documentation string। लिखना: def f(): """explanation"""; पढ़ना: f.__doc__ या help(f)।
- Recursion क्या है? Base case क्यों ज़रूरी है?Function का खुद को call करना, जब तक base case (रुकने की शर्त) पूरी न हो। Base case के बिना function अनंत बार खुद को call करता रहेगा — RecursionError आएगी।
- Factorial का recursive algorithm लिखिए।def factorial(n): if n==0 or n==1: return 1; else: return n * factorial(n-1) — base case n=0 या 1 पर 1 return करता है, बाकी n × पिछले factorial से गुणा।
- Built-in function किसे कहते हैं? 4 उदाहरण दीजिए।Python के साथ पहले से मौजूद functions जो बिना import के उपयोग होते हैं — len(), sum(), max(), sorted()।
- Module क्या है? Import के 3 तरीके लिखिए।Module pre-written code वाली file है (math, random)। तरीके — import module_name; from module_name import function; import module_name as alias।
- math module के 4 उपयोगी functions लिखिए।math.sqrt() (square root), math.factorial() (factorial), math.ceil() (ऊपर round), math.floor() (नीचे round), math.pi (constant)।
- Recursion और Loop में कब कौन-सा उपयोग करना चाहिए?Recursion — जब समस्या naturally recursive हो (factorial, tree traversal, Fibonacci) — code छोटा व elegant बनता है। Loop — साधारण repetition के लिए, कम memory लेता है, ज़्यादा efficient होता है।