Variable-Length Arguments in Python in Hindi

Arpit Nageshwar
⏰ 3 min read

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) — जिनसे क्रमशः *args aur **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)

VarArgs ke Types *args • Multiple positional values   accept karta hai • Values ek Tuple ki tarah   store hoti hain • Single asterisk (*) use hota hai • Example call:   my_func(1, 2, 3) **kwargs • Multiple keyword (named)   values accept karta hai • Values ek Dictionary ki   tarah store hoti hain • Double asterisk (**) use hota hai • Example call:   my_func(name="Ravi", age=20)

यह 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 में *args aur **kwargs दोनों एक साथ इस्तेमाल किए जा सकते हैं, बस ध्यान रखना होता है कि *args हमेशा **kwargs से पहले लिखा जाए।

    def my_func(*args, **kwargs):
        print(args)
        print(kwargs)

  • 4. नाम "args" और "kwargs" fixed नहीं हैं:
    असल में important चीज़ सिर्फ * और ** symbols होते हैं — args aur kwargs सिर्फ 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 लेना।

Arpit Nageshwar

✍️ Arpit Nageshwar

Post-graduated | Web Developer | +3 yr Experience | IIT Kharagpur Certified