Default parameters, keyword arguments
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 override2. 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 junkHar 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 unusual3. 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
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?
Default parameter kya hota hai?
def f(x=10)); agar caller omit kare toh use hota hai.Function definition mein default parameters kahan jaane chahiye?
Kya function call mein keyword argument positional se pehle aa sakta hai?
Default value kab evaluate hoti hai — definition par ya har call par?
def f(x, lst=[]) dangerous KYUN 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?
Kai parameters ke saath keyword arguments KYUN use karte hain?
2nd parameter ko uske default par rakhte hue 3rd parameter kaise set karoge?
f(a, third=9).Connections
- Functions - def and return
- Variable scope - local vs global
- *args and **kwargs (variadic functions)
- Mutable vs immutable objects
- DRY principle - Don't Repeat Yourself