Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 51

*args and **kwargs

args और kwargs क्यों

कभी आपको पहले से पता नहीं होता कि function को कितने arguments मिलेंगे। *args और **kwargs function को कितने भी arguments स्वीकार करने देते हैं। *args extra positional values इकट्ठा करता है, और **kwargs extra named values।

💡 *args → extra positional values का tuple। **kwargs → extra named values का dict।

*args — कई positional values

def add(*args):
    total = 0
    for n in args:
        total += n
    return total

print(add(1, 2, 3))       # 6
print(add(5, 10, 15, 20)) # 50
6
50

*args आप जितने भी numbers भेजें उन्हें tuple में इकट्ठा करता है, तो वही function 3 numbers या 4 — या किसी भी गिनती के लिए चलता है।

**kwargs — कई keyword values

def info(**kwargs):
    for key, value in kwargs.items():
        print(key, "=", value)

info(name="Aman", age=18, city="Delhi")
name = Aman
age = 18
city = Delhi

**kwargs named arguments को dictionary में इकट्ठा करता है। हर key और value पढ़ने को इसकी .items() पर loop कर सकते हैं।

दोनों साथ इस्तेमाल

def demo(a, *args, **kwargs):
    print("a:", a)
    print("args:", args)
    print("kwargs:", kwargs)

demo(1, 2, 3, x=10, y=20)
a: 1
args: (2, 3)
kwargs: {'x': 10, 'y': 20}

सामान्य parameter a पहली value लेता है, *args बाक़ी positional पकड़ता है, और **kwargs named पकड़ता है। क्रम मायने रखता है: सामान्य, फिर *args, फिर **kwargs।

* और ** से unpacking

वही symbols call करते समय list या dict को वापस arguments में फैला सकते हैं।

def add(a, b, c):
    return a + b + c

nums = [1, 2, 3]
print(add(*nums))               # list फैलाता है -> add(1,2,3)

data = {"a": 1, "b": 2, "c": 3}
print(add(**data))              # dict फैलाता है -> add(a=1,b=2,c=3)
6
6

यहाँ * और ** इकट्ठा करने का उल्टा करते हैं — list को positional arguments में और dict को keyword arguments में unpack करते हैं।

आम गलतियाँ

  • गलत parameter क्रम। यह सामान्य params, फिर *args, फिर **kwargs होना चाहिए।
  • यह सोचना कि नाम ज़रूरी हैं। सिर्फ़ * और ** मायने रखते हैं; नाम convention हैं।
  • Types मिला देना। args tuple है, kwargs dict — उसी अनुसार access कीजिए।
  • Unpack करना भूलना। जहाँ अलग values चाहिए वहाँ पूरी list भेजना — *list इस्तेमाल कीजिए।

सारांश

  • *args function को कितने भी positional values (tuple के रूप में) लेने देता है।
  • **kwargs उसे कितने भी named values (dict के रूप में) लेने देता है।
  • क्रम: सामान्य parameters, फिर *args, फिर **kwargs।
  • सिर्फ़ * और ** मायने रखते हैं — नाम convention हैं।
  • list या dict unpack करने को call करते समय * और ** इस्तेमाल कीजिए।

आगे, बुनियाद दोहराइए Python functions में, या देखिए list comprehension।

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

Python में *args और **kwargs क्या हैं?
ये function को कितने भी arguments स्वीकार करने देते हैं। *args extra positional arguments को tuple में इकट्ठा करता है, और **kwargs extra keyword arguments को dictionary में। ये functions को लचीला बनाते हैं।
*args और **kwargs में क्या अंतर है?
*args बिना नाम भेजी positional values के लिए है (जैसे add(1, 2, 3))। **kwargs named values के लिए (जैसे info(name="Aman", age=18))। एक tuple देता है, दूसरा dictionary।
क्या नाम args और kwargs ही होने चाहिए?
नहीं। सिर्फ़ * और ** मायने रखते हैं। *args और **kwargs बस आम convention हैं; *numbers या **options बिल्कुल वैसे ही चलते हैं।
Parameters किस क्रम में आते हैं?
पहले सामान्य parameters, फिर *args, फिर keyword-only parameters, फिर **kwargs। गलत क्रम में रखना syntax error देता है।
* और ** से unpacking क्या करता है?
Function call करते समय, * list/tuple को positional arguments में फैलाता है और ** dictionary को keyword arguments में। यह उन्हें इकट्ठा करने का उल्टा है।
← Back to Python Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicMagic Methods (Dunder) आपकी प्रगति: 51 / 66 (77%) · Lesson 52 / 66 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें