Table of Contents
Introduction to Variable-Length Arguments in Hindi
आसान भाषा में कहें तो, VarArgs की मदद से एक ही function को कभी 2 values के साथ, तो कभी 5 values के साथ, तो कभी बिल्कुल भी value दिए बिना call किया जा सकता है — function हर बार flexible तरीके से काम कर लेता है।
Python में VarArgs को implement करने के लिए दो special symbols इस्तेमाल किए जाते हैं —
*(single asterisk) और**(double asterisk) — जिनसे क्रमशः*argsaur**kwargsबनते हैं।यह एक बहुत ही powerful feature है, क्योंकि इसकी वजह से Python के कई built-in functions (जैसे
print()) भी किसी भी संख्या में arguments accept कर पाते हैं —print()को आप एक value दें या दस, वह हर बार काम करता है, यह इसी VarArgs concept की वजह से possible है।VarArgs का उपयोग तब सबसे ज़्यादा फायदेमंद होता है जब आप ऐसा function design कर रहे हों जिसे अलग-अलग users अलग-अलग संख्या में inputs के साथ इस्तेमाल करेंगे, जैसे किसी list के सभी numbers का sum निकालने वाला function।
Exam की दृष्टि से इसकी सरल परिभाषा याद रखनी हो तो: "VarArgs (Variable-Length Arguments) allow a function to accept an arbitrary number of arguments, using *args for positional arguments and **kwargs for keyword arguments."
Example of VarArgs Real Life में
मान लीजिए आप एक calculator बना रहे हैं जो numbers को जोड़ता है — कभी आप सिर्फ 2 numbers जोड़ना चाहते हैं, कभी 5, और कभी 10। अगर आप हर बार अलग-अलग संख्या के parameters के लिए अलग function बनाएंगे, तो यह बहुत मुश्किल हो जाएगा। VarArgs की मदद से आप एक ही function बना सकते हैं जो चाहे कितने भी numbers क्यों न मिलें, उन्हें सही तरीके से handle कर ले।
Types of VarArgs in Hindi (*args and **kwargs)
यह diagram दिखाता है कि *args multiple positional values को एक Tuple की तरह इकट्ठा करता है, जबकि **kwargs multiple named (keyword) values को एक Dictionary की तरह इकट्ठा करता है।
1. *args (Non-Keyword Variable Arguments):
*argsका उपयोग तब किया जाता है जब function को बिना नाम (positional) कई सारी values एक साथ भेजनी हों। Function के अंदर यह सारी values एक Tuple के रूप में मिलती हैं।2. **kwargs (Keyword Variable Arguments):
**kwargsका उपयोग तब किया जाता है जब function कोkey=valueके रूप में कई सारी named values एक साथ भेजनी हों। Function के अंदर यह सारी values एक Dictionary के रूप में मिलती हैं।3. दोनों को एक साथ भी इस्तेमाल किया जा सकता है:
Python में एक ही function में*argsaur**kwargsदोनों एक साथ इस्तेमाल किए जा सकते हैं, बस ध्यान रखना होता है कि*argsहमेशा**kwargsसे पहले लिखा जाए।def my_func(*args, **kwargs):
print(args)
print(kwargs)4. नाम "args" और "kwargs" fixed नहीं हैं:
असल में important चीज़ सिर्फ*और**symbols होते हैं —argsaurkwargsसिर्फ conventionally (परंपरागत रूप से) इस्तेमाल किए जाने वाले नाम हैं, आप चाहें तो*valuesया**detailsभी लिख सकते हैं।
Examples of VarArgs in Hindi
-
Example 1: *args से Numbers का Sum निकालना
def add_numbers(*args):
total = 0
for num in args:
total += num
return total
print(add_numbers(1, 2, 3)) # Output: 6
print(add_numbers(10, 20, 30, 40)) # Output: 100यहाँ एक ही function किसी भी संख्या में numbers लेकर उनका sum निकाल सकता है, चाहे 3 numbers दिए जाएं या 4।
-
Example 2: **kwargs से Student Details Print करना
def student_info(**kwargs):
for key, value in kwargs.items():
print(key, ":", value)
student_info(name="Aman", age=21, city="Delhi")Output:
name : Aman
age : 21
city : Delhiयहाँ हमें पहले से नहीं पता कि कितनी details दी जाएंगी, फिर भी function उन सभी को handle कर लेता है।
-
Example 3: *args aur **kwargs दोनों को एक साथ इस्तेमाल करना
def show_details(*args, **kwargs):
print("Positional values:", args)
print("Keyword values:", kwargs)
show_details(1, 2, 3, name="Riya", course="Python")Output:
Positional values: (1, 2, 3)
Keyword values: {'name': 'Riya', 'course': 'Python'} -
Example 4: Maximum Value निकालना *args से
def find_max(*args):
return max(args)
print(find_max(4, 9, 2, 15, 6)) # Output: 15यह function किसी भी संख्या में values लेकर उनमें से सबसे बड़ी value return कर सकता है।
Difference Between *args and **kwargs in Hindi
| Point | *args | **kwargs |
|---|---|---|
| Symbol | Single asterisk (*) | Double asterisk (**) |
| Accept karta hai | Bina naam (positional) values | key=value ke roop mein named values |
| Internally store hota hai | Tuple ki tarah | Dictionary ki tarah |
| Access karne ka tarika | Loop se ya index se | .items(), .keys(), .values() se |
| Example Call | my_func(1, 2, 3) | my_func(a=1, b=2, c=3) |
| Function mein Order | Pehle likha jaata hai | Hamesha *args ke baad likha jaata hai |
Simple शब्दों में समझें तो, *args का उपयोग तब करें जब आपको बिना नाम के कई values एक साथ लेनी हों (जैसे numbers की एक list), और **kwargs का उपयोग तब करें जब आपको नाम के साथ (key-value pairs में) कई values एक साथ लेनी हों (जैसे किसी person की details)। दोनों मिलकर Python के functions को बेहद flexible aur reusable बनाते हैं।
FAQs
VarArgs (Variable-Length Arguments) ऐसे parameters होते हैं जो किसी function को किसी भी संख्या में arguments accept करने की सुविधा देते हैं, जिन्हें *args aur **kwargs से implement किया जाता है।
*args बिना नाम की (positional) values को एक Tuple की तरह store करता है, जबकि **kwargs नाम वाली (keyword) values को एक Dictionary की तरह store करता है।
हाँ, एक ही function में दोनों एक साथ इस्तेमाल किए जा सकते हैं, बस ध्यान रखना होता है कि *args हमेशा **kwargs से पहले लिखा जाए।
नहीं, args aur kwargs सिर्फ conventionally इस्तेमाल किए जाने वाले नाम हैं — असल में ज़रूरी सिर्फ * aur ** symbols होते हैं, नाम कुछ भी रखा जा सकता है।
VarArgs तब सबसे ज़्यादा फायदेमंद होते हैं जब यह पहले से fix न हो कि function को कितने arguments दिए जाएंगे, जैसे numbers का sum निकालना या किसी person की flexible details लेना।