⚠ यह कार्रवाई अनुमति नहीं है!
🐍 NIELIT O Level · M3-R5 Python · Hindi Notes

Chapter 6: Functions — Code को Reusable बनाना

Functions Python programming का दिल हैं — def, Parameters, Return, Default/Keyword Arguments, *args/**kwargs, DocStrings, global keyword, Recursion और Built-in व Library Functions (math, random, datetime)। हर concept diagrams से visualize — call flow, scope व recursion stack!

📑 13 Sections 🖼️ 4 Diagrams 💻 45+ Examples ❓ 50 MCQs + Output Qs 🗓 Updated 2026
👉 सभी chapters देखने के लिए swipe करें
📑 Table of Contents — किसी भी topic पर सीधे जाएँ
6.0

Function क्या है? — Modular Programming का आधार

Function = code का reusable block जो एक specific काम करता है। बड़े problem को छोटे-छोटे functions में तोड़ना Modular Programming कहलाता है, और पहले पूरा design सोचना फिर टुकड़ों में बाँटना Top-Down Approach

🏗️ Top-Down Approach — Structure

Levelक्या होता है
1. Main Problemपूरा task — जैसे "Calculator बनाओ"
2. Sub-ProblemsAdd, Subtract, Multiply, Divide में बाँटना
3. Functionsहर sub-problem को एक function में लिखना
4. Integrationmain() सबको जोड़कर चलाता है

✅ Functions के फायदे

  • Reusability: एक बार लिखो, कहीं भी बार-बार उपयोग करो।
  • Readability: बड़ा code छोटे, समझने लायक टुकड़ों में।
  • Debugging आसान: गलती किस function में है, ढूँढना आसान।
  • Team Collaboration: अलग-अलग functions अलग लोग लिख सकते हैं।
🐍 Modular Calculator — Top-Down का उदाहरण▶ Run
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()
OUTPUTSum: 14
Difference: 6
Exam Point: Modular Programming = बड़े program को छोटे reusable functions में तोड़ना। Top-Down = पहले main design, फिर sub-parts। दोनों exam में "advantages of modular programming" जैसे प्रश्न में आते हैं।
6.1

def, Parameters व Return — Function बनाना व चलाना

def keyword से function बनता है, parameters से values अंदर आती हैं, return से result बाहर जाता है। बिना return वाला function None देता है।

Function Call Flow — Input से Output तक

Calleradd(5, 3) Functiondef add(a,b):return a+b Result8 वापस मिला arguments भेजे return से मिला
🐍 5 प्रकार के functions — एक साथ▶ Run
# 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)
OUTPUTHello!
Sum = 7
30
13 7 30
🐍 Return न होने पर None▶ Run
def display():
    print("Kuch print kiya")

result = display()
print("Return value:", result)
OUTPUTKuch print kiya
Return value: None
Exam Point: def = function define; parameters = definition में नाम, arguments = call के समय values; return optional — न हो तो function None देता है; multiple return values tuple के रूप में मिलते हैं।
6.2

Local व Global Variables — Scope का खेल

Local variable function के अंदर बनता है, सिर्फ वहीं जीता है। Global variable function के बाहर बनता है, पूरे program में उपलब्ध है। दोनों का same नाम हो तो function के अंदर local जीतता है!

Scope — Global Program के बाहर, Local अंदर बंद

🌍 Global Scope (पूरा Program) x = 10 (global) 🔒 Local Scope (def test():) x = 50 (local) यह x सिर्फ इसी function में जीता है function के बाहर global x=10 ही रहेगा
🐍 Local Global को छुपा देता है (Shadow)▶ Run
x = 100    # global

def test():
    x = 50   # local — alag variable hai!
    print("Andar x =", x)

test()
print("Bahar x =", x)
OUTPUTAndar x = 50
Bahar x = 100

🔑 global Keyword — जब सच में बदलना हो

🐍 global के बिना Error!▶ Run
count = 0

def increment():
    global count      # bina isake UnboundLocalError aayega
    count += 1
    print("Andar:", count)

increment()
increment()
print("Bahar:", count)
OUTPUTAndar: 1
Andar: 2
Bahar: 2
बिना global keyword: count += 1 लिखते ही Python सोचता है "यह एक नया local variable बना रहा है", और चूँकि उसे अभी value नहीं मिली (right side में पढ़ने की कोशिश), UnboundLocalError आती है!
Exam Point: Local variable का scope सिर्फ उसी function तक; Global पूरे program में। Same नाम होने पर function के अंदर local प्राथमिकता पाता है। Global variable modify करना हो तो global keyword ज़रूरी।
6.3

Default, Keyword व *args/**kwargs — Flexible Functions

Function को और flexible बनाने के 4 तरीके — Default (missing argument के लिए fallback), Keyword (नाम से value देना), *args (कई positional values), **kwargs (कई keyword values)।

1️⃣ Default Parameters

🐍 Argument न मिले तो default चलेगा▶ Run
def greet(name="Guest"):
    print("Namaste,", name)

greet("Aditya")
greet()
OUTPUTNamaste, Aditya
Namaste, Guest

2️⃣ Keyword Arguments

🐍 नाम से value दो, order मायने नहीं रखता▶ Run
def student(name, age):
    print(name, "is", age, "years old")

student(age=18, name="Ravi")   # order ulta, phir bhi sahi!
OUTPUTRavi is 18 years old

3️⃣ *args — कई Positional Values

🐍 जितने चाहो values, tuple में मिलेंगी▶ Run
def total(*numbers):
    print("Mile:", numbers)     # tuple
    print("Sum:", sum(numbers))

total(10, 20, 30)
total(5, 15, 25, 35)
OUTPUTMile: (10, 20, 30)
Sum: 60
Mile: (5, 15, 25, 35)
Sum: 80

4️⃣ **kwargs — कई Keyword Values

🐍 जितनी चाहो named values, dictionary में मिलेंगी▶ Run
def info(**details):
    for key, value in details.items():
        print(key, "=", value)

info(name="Priya", age=21, city="Lucknow")
OUTPUTname = Priya
age = 21
city = Lucknow
Exam Point: Default — missing argument के लिए fallback; Keyword — नाम से value, order irrelevant; *args — extra positional values का tuple; **kwargs — extra keyword values का dictionary। Order: positional → default → *args → **kwargs।
6.4

DocStrings — Function की Official Documentation

DocString = function/class के शुरू में triple quotes में लिखी explanation — Chapter 3 में हमने comments देखे थे, DocString उसका organized व official रूप है। __doc__ या help() से पढ़ते हैं।
🐍 DocString लिखना व पढ़ना▶ Run
def add(a, b):
    """Yah function do numbers ko jodta hai."""
    return a + b

print(add.__doc__)
print(add(3, 4))
OUTPUTYah function do numbers ko jodta hai.
7
Exam Point: DocString """triple quotes""" में, function की पहली line पर; access करने के 2 तरीके — func.__doc__ या help(func)। Comments (#) से अलग — DocString structured documentation है।
6.5

Recursion — Function जो खुद को बुलाता है

Recursion = function खुद को call करे, जब तक base case (रुकने की शर्त) पूरी न हो जाए। Base case के बिना = infinite recursion (RecursionError)!

Recursion Call Stack — factorial(4)

factorial(4) = 4×fact(3) factorial(3) = 3×fact(2) factorial(2) = 2×fact(1) factorial(1) = 1 (BASE CASE!) अब वापसी शुरू — नीचे से ऊपर की ओर गुणा होता है 1 (base) → 2×1=2 → 3×2=6 → 4×6=24 Final Answer: factorial(4) = 24
🐍 Factorial — Recursion का Classic Example▶ Run
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))
OUTPUT120
🐍 Fibonacci — Recursion से▶ Run
def fibo(n):
    if n <= 1:
        return n
    return fibo(n-1) + fibo(n-2)

for i in range(7):
    print(fibo(i), end=" ")
OUTPUT0 1 1 2 3 5 8

⚖️ Recursion vs Loop

आधारRecursionLoop
तरीकाFunction खुद को call करेwhile/for से दोहराव
Memoryज़्यादा (हर call स्टैक में)कम
Codeछोटा व elegantकभी-कभी लंबा
कब उपयोगTree, factorial जैसी natural recursive समस्याएँसाधारण repetition
Exam Point: हर recursive function में base case ज़रूरी — नहीं तो RecursionError (infinite recursion)। Factorial व Fibonacci classic recursion examples हैं — exam में दोनों का trace/output पूछा जाता है।
6.6

Built-in Functions — Python में पहले से मौजूद Tools

Python में सैकड़ों functions पहले से बने हैं — बिना import किए सीधे उपयोग करें। हमने कई पहले ही उपयोग किए हैं (print, len, type...) — यहाँ organize करके देखते हैं।
FunctionकामExample
len()Length/sizelen("Hi") → 2
abs()Absolute valueabs(-8) → 8
round()Round offround(3.567, 2) → 3.57
pow()Powerpow(2,5) → 32
sum()Sum of iterablesum([1,2,3]) → 6
sorted()Sorted नई listsorted([3,1,2]) → [1,2,3]
type()Data typetype(5) → int
isinstance()Type check T/Fisinstance(5,int) → True
divmod()Quotient व remainderdivmod(17,5) → (3,2)
eval()String expression चलानाeval("2+3") → 5
🐍 Utility functions एक साथ▶ Run
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))
OUTPUT100
[40, 30, 20, 10]
True
True
(3, 2)
Exam Point: Built-in functions बिना import के use होते हैं। all() सब true पर True, any() कोई एक true पर True। divmod(a,b) = (quotient, remainder) tuple।
6.7

Modules व Import — Python की Ready-Made Libraries

Module = pre-written code वाली file — math, random, datetime जैसी। import से लाओ, फिर उपयोग करो। खुद से लिखने की ज़रूरत नहीं!

🧮 math Module

🐍 math के जादुई functions▶ Run
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...
OUTPUT7.0
120
4
3
3.141592653589793

🎲 random Module

🐍 random से मज़ेदार randomness▶ Run
import random
print(random.randint(1, 10))        # 1-10 ke beech koi number
print(random.choice(["A","B","C"])) # list se koi ek
OUTPUT (har baar alag)7
B

🕒 datetime Module

🐍 आज की तारीख व उम्र calculator▶ Run
from datetime import date
today = date.today()
print("Aaj ki date:", today)

birth_year = 2005
age = today.year - birth_year
print("Age:", age)
OUTPUTAaj ki date: 2026-07-21
Age: 21

📥 Import के 3 तरीके

🐍 पूरा module, specific function, या alias▶ Run
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))
OUTPUT4.0
5.0
6.0
Exam Point: import module_name (prefix ज़रूरी); from module import func (सीधे उपयोग); import module as alias (छोटा नाम)। math.sqrt(), math.factorial(), math.ceil()/floor() सबसे ज़्यादा पूछे जाते हैं।
6.8

🎯 Output-Based Questions — Functions पर Tricky सवाल

Scope, default arguments और recursion के questions सबसे ज़्यादा confuse करते हैं — पहले खुद सोचिए!

Q1. Default vs Passed Argument

🐍 Output बताइए▶ Run
def power(base, exp=2):
    return base ** exp

print(power(3))
print(power(3, 3))
ANSWER9
27
← पहले call में exp default (2) उपयोग हुआ; दूसरे में explicitly 3 दिया गया।

Q2. Local Variable का Scope

🐍 क्या error आएगी?▶ Run
def show():
    msg = "Hello"
    print(msg)

show()
print(msg)
ANSWERHello
NameError: name 'msg' is not defined
← msg local variable है, function के बाहर मौजूद नहीं।

Q3. Return न होने पर

🐍 Output बताइए▶ Run
def test():
    x = 5

result = test()
print(result)
ANSWERNone
← कोई return नहीं है, इसलिए function automatically None देता है।

Q4. *args का Behavior

🐍 Output बताइए▶ Run
def total(*nums):
    return sum(nums)

print(total(1, 2, 3, 4))
print(total())
ANSWER10
0
← *args कोई भी संख्या में values ले सकता है, यहाँ तक कि 0 भी (खाली tuple, sum=0)।

Q5. global के बिना Error

🐍 क्या होगा?▶ Run
n = 5
def change():
    n = n + 1
    print(n)
change()
ANSWERUnboundLocalError: local variable 'n' referenced before assignment
← n = n+1 लिखते ही n local बन गया, पर right side में उसकी value अभी तय नहीं — error।

Q6. Recursion Trace

🐍 Output बताइए▶ Run
def f(n):
    if n == 0:
        return 0
    return n + f(n-1)

print(f(4))
ANSWER10
← 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

🐍 Output बताइए▶ Run
def info(**data):
    print(type(data))
    print(data)

info(x=1, y=2)
ANSWER<class 'dict'>
{'x': 1, 'y': 2}
← **kwargs हमेशा dictionary में collect होता है।

Q8. Keyword Argument Order

🐍 Output बताइए▶ Run
def sub(a, b):
    return a - b

print(sub(b=3, a=10))
ANSWER7
← Keyword arguments में order मायने नहीं रखता — नाम से match होता है।
6.9

💻 Practice Programs — Functions के असली उपयोग

हर program functions, parameters, recursion या modules पर — real exam patterns!

Program 1 — Prime Check Function (Chapter 2 जैसा logic, अब function में)

🐍 is_prime.py▶ Run
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=" ")
OUTPUT2 3 5 7 11 13 17 19

Program 2 — Recursive Sum of Digits

🐍 recursive_digit_sum.py▶ Run
def digit_sum(n):
    if n == 0:
        return 0
    return n % 10 + digit_sum(n // 10)

print(digit_sum(1234))
OUTPUT10

Program 3 — Simple Interest Calculator (Function + Default)

🐍 si_calculator.py▶ Run
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 se
OUTPUT1200.0
400.0

Program 4 — GCD Function (Recursion से)

🐍 gcd_recursive.py — Euclidean algorithm▶ Run
def gcd(a, b):
    if b == 0:
        return a
    return gcd(b, a % b)

print(gcd(48, 18))
OUTPUT6

Program 5 — Multiple Marks Average (*args से)

🐍 average_marks.py▶ Run
def average(*marks):
    if len(marks) == 0:
        return 0
    return sum(marks) / len(marks)

print(average(85, 90, 78, 92))
print(average(70, 60))
OUTPUT86.25
65.0

Program 6 — Circle Calculator (math module से)

🐍 circle_calc.py▶ Run
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))
OUTPUTArea: 153.94
Circumference: 43.98

Program 7 — Student Profile Card (**kwargs)

🐍 profile_card.py▶ Run
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)
OUTPUTName: Aditya
city: Lucknow
course: Python
batch: 2026
Exam Point: Prime check, GCD (Euclidean), digit sum recursion — ये classic recursive व function programs हर exam में repeat होते हैं। *args से average निकालना practical का common question है।
6.10

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।
6.11

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)

  1. Function क्या है? इसके फायदे लिखिए।Function reusable code का block है जो specific task करता है। फायदे — code reusability, readability, आसान debugging, team collaboration।
  2. Modular Programming व Top-Down Approach समझाइए।Modular Programming = बड़े program को छोटे functions में तोड़ना; Top-Down = पहले main design सोचना, फिर उसे sub-problems (functions) में divide करना।
  3. Parameter व Argument में अंतर बताइए।Parameter function definition में दिया नाम है (def f(a, b):); Argument function call के समय दी गई असली value है (f(5, 10))।
  4. return statement का क्या काम है? बिना return क्या होता है?return function को terminate करके value वापस caller को भेजता है। बिना return function automatically None देता है।
  5. Local व Global variable में अंतर बताइए।Local variable function के अंदर बनता है, सिर्फ वहीं access होता है; Global variable function के बाहर बनता है, पूरे program में access होता है।
  6. global keyword की ज़रूरत कब पड़ती है?जब function के अंदर किसी global variable की value बदलनी हो — बिना global keyword के Python उसे नया local variable मान लेता है और UnboundLocalError देता है।
  7. Default parameter व Keyword argument में अंतर बताइए।Default parameter definition में fallback value देता है (def f(x=5)); Keyword argument call के समय नाम से value देता है (f(x=10)) — order irrelevant हो जाता है।
  8. *args और **kwargs में अंतर उदाहरण सहित लिखिए।*args variable संख्या के positional arguments को tuple में लेता है — def f(*args)। **kwargs variable संख्या के keyword arguments को dictionary में लेता है — def f(**kwargs)।
  9. DocString क्या है? कैसे लिखते व पढ़ते हैं?Function/class की शुरुआत में triple quotes (""" """) में लिखी documentation string। लिखना: def f(): """explanation"""; पढ़ना: f.__doc__ या help(f)।
  10. Recursion क्या है? Base case क्यों ज़रूरी है?Function का खुद को call करना, जब तक base case (रुकने की शर्त) पूरी न हो। Base case के बिना function अनंत बार खुद को call करता रहेगा — RecursionError आएगी।
  11. 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 से गुणा।
  12. Built-in function किसे कहते हैं? 4 उदाहरण दीजिए।Python के साथ पहले से मौजूद functions जो बिना import के उपयोग होते हैं — len(), sum(), max(), sorted()।
  13. Module क्या है? Import के 3 तरीके लिखिए।Module pre-written code वाली file है (math, random)। तरीके — import module_name; from module_name import function; import module_name as alias।
  14. math module के 4 उपयोगी functions लिखिए।math.sqrt() (square root), math.factorial() (factorial), math.ceil() (ऊपर round), math.floor() (नीचे round), math.pi (constant)।
  15. Recursion और Loop में कब कौन-सा उपयोग करना चाहिए?Recursion — जब समस्या naturally recursive हो (factorial, tree traversal, Fibonacci) — code छोटा व elegant बनता है। Loop — साधारण repetition के लिए, कम memory लेता है, ज़्यादा efficient होता है।
Revision Tip: global keyword का उपयोग, *args/**kwargs का अंतर, base case की ज़रूरत, और factorial/GCD का recursive code — ये 4 areas exam में सबसे ज़्यादा पूछे जाते हैं। Section 6.8 के output questions दो बार practice करें!
FAQ

अक्सर पूछे जाने वाले प्रश्न

Function क्या है और इसके फायदे क्या हैं?
Function एक reusable code block है जो specific task करता है। फायदे — code reusability (एक बार लिखो, कई बार उपयोग करो), बड़े problem को छोटे भागों में तोड़ना (modular programming), debugging आसान, code readable बनता है।
Local और Global variable में क्या अंतर है?
Local variable function के अंदर बनता है और सिर्फ उसी function में access होता है; Global variable function के बाहर बनता है और पूरे program में access होता है। Function के अंदर global variable modify करने के लिए global keyword चाहिए, वरना Python उसे नया local variable समझ लेता है।
*args और **kwargs में क्या अंतर है?
*args variable संख्या के positional arguments को tuple में collect करता है; **kwargs variable संख्या के keyword arguments को dictionary में collect करता है। दोनों का उपयोग तब होता है जब arguments की संख्या पहले से पता न हो।
Recursion क्या है? उदाहरण दीजिए।
Recursion वह प्रक्रिया है जिसमें function खुद को call करता है जब तक एक base condition पूरी न हो जाए। जैसे factorial(n) = n × factorial(n-1), जो factorial(1) = 1 (base case) तक चलता रहता है। हर recursive function में base case ज़रूरी है, वरना infinite recursion होगा।
Function में return statement न हो तो क्या होता है?
अगर function में return statement नहीं है, तो वह automatically None return करता है। return statement function को तुरंत terminate कर देता है और value वापस caller को भेजता है — यह optional है।

🎯 Chapter 6 पूरा हुआ! अब आगे बढ़ें

Chapter 7 में File Processing — files खोलना, पढ़ना, लिखना, append करना व with statement का सही उपयोग।

Chapter 7 पढ़ें ➜