1.2.28 · HinglishIntroduction to Programming (Python)

Default parameters, keyword arguments

1,547 words7 min readRead in English

1.2.28 · Coding › Introduction to Programming (Python)


1. Vocabulary (WHAT)

def greet(name, greeting="Hello"):   # greeting has a default
    return greeting + ", " + name
 
greet("Asha")                # 'Hello, Asha'   -> default used
greet("Asha", "Namaste")     # 'Namaste, Asha' -> positional override
greet("Asha", greeting="Hi") # 'Hi, Asha'      -> keyword override

2. Defaults KYUN exist karte hain (need derive karo)

Maano aap ek "connect to database" function likhte ho. Almost hamesha port 5432 hota hai. Defaults ke bina aap likhoge:

connect("localhost", 5432, "utf8", 30)   # everyone repeats the same junk

Har caller wahi 5432, "utf8", 30 copy karta hai. Repetition = bugs jab ek copy change ho. Toh hum common value ko definition mein bake kar dete hain:

def connect(host, port=5432, encoding="utf8", timeout=30):
    ...
connect("localhost")                 # the easy, common case
connect("localhost", timeout=60)     # change ONLY what's unusual

3. Keyword arguments KYUN exist karte hain (HOW they help)

Kai parameters ke saath, position fragile hoti hai. box(2, 5, 0, 1) padh ke — kaun sa width hai? height? Koi nahi jaanta. Keyword arguments calls ko self-documenting aur order-independent banate hain:

def box(width, height, x=0, y=0):
    ...
box(width=2, height=5)      # crystal clear
box(height=5, width=2)      # order doesn't matter with keywords
box(2, 5, y=1)              # mix: positional then keyword
Figure — Default parameters, keyword arguments

4. Ordering RULES (aur KYUN)

Rule 1 KYUN: Python parameters ko left-to-right position se fill karta hai. Agar pehle default aata, toh usse diya gaya positional argument ambiguous ho jaata — kya woh default wale ko fill karta hai ya skip karta hai? Ise forbid karne se ambiguity hat jaati hai.

Rule 2 KYUN: Jab aap d=9 bol dete ho, Python ko aage ka bare 2 kisi slot mein daalna nahi pata. Positionals pehle resolve hone chahiye.


5. Famous mutable-default trap


6. Worked examples


Recall Feynman: 12-saal ke bachche ko explain karo

Socho pizza order karna. Shop already medium size aur cheese assume karti hai jab tak tum kuch aur na kaho — yeh defaults hain. Size tabhi bolte ho jab large chahiye. Aur toppings ek fixed secret order mein chillaane ki bajay, tum bas bolte ho "topping = mushroom, size = large" — yeh keyword arguments hain, naam lete ho taaki koi confuse na ho. Ek problem: cook ko kabhi ek shared topping bowl sabke liye mat do, warna agli customer ko tumhara bachaa hua milega — yahi mutable-default bug hai!


7. Active recall

Parameter aur argument mein kya fark hai?
Parameter = definition mein naam; argument = call mein pass ki gayi actual value.
Default parameter kya hota hai?
Woh parameter jisme def mein ek fallback value ho (def f(x=10)); agar caller omit kare toh use hota hai.
Function definition mein default parameters kahan jaane chahiye?
Saare non-default parameters ke baad (defaults drift right).
Kya function call mein keyword argument positional se pehle aa sakta hai?
Nahi — saare positional args pehle aane chahiye kisi bhi keyword arg se.
Default value kab evaluate hoti hai — definition par ya har call par?
Ek baar, definition time par (isse mutable-default trap hota hai).
def f(x, lst=[]) dangerous KYUN hai?
Same list saari calls mein share hoti hai kyunki default def time par ek baar create hota hai.
Mutable-default trap ko kaise fix karte hain?
None ko default use karo, phir andar fresh object banao: if lst is None: lst = [].
greet("Asha", name="Asha") se kaun sa error aata hai?
TypeError: got multiple values for argument 'name'.
Kai parameters ke saath keyword arguments KYUN use karte hain?
Yeh self-documenting aur order-independent hote hain, fragile positional mistakes se bachate hain.
2nd parameter ko uske default par rakhte hue 3rd parameter kaise set karoge?
3rd ko keyword se pass karo, jaise f(a, third=9).

Connections

Concept Map

value passed becomes

is a

provides

matches

matched by

matched by

motivates

motivates

enables

enables

constrains

constrains

Parameter in definition

Argument in call

Default parameter

Fallback value if omitted

Keyword argument

By name

Positional argument

By order

Repetition of common values

Fragile position order

Convenient common case

Self-documenting calls

Rule 1: non-defaults before defaults

Rule 2: positional before keyword