$lang['tuto'] = "سبق"; ?> Python فنکشن کی تعریف میں *args اور

Python فنکشن کی تعریف میں *args اور **kwargs کو سمجھنا

Python فنکشن کی تعریف میں *args اور **kwargs کو سمجھنا
Python فنکشن کی تعریف میں *args اور **kwargs کو سمجھنا

ازگر کے فنکشن پیرامیٹرز کی تلاش

Python میں، لچکدار اور متحرک افعال لکھنے کے لیے *args اور **kwargs کے استعمال کو سمجھنا بہت ضروری ہے۔ یہ خصوصی نحوی عناصر ڈویلپرز کو ایک فنکشن میں متغیر تعداد میں دلائل دینے کی اجازت دیتے ہیں، جس سے کوڈ کو دوبارہ قابل استعمال اور موثر بنایا جاتا ہے۔

اس مضمون میں، ہم دریافت کریں گے کہ فنکشن پیرامیٹرز میں استعمال ہونے پر * (سنگل اسٹار) اور ** (ڈبل اسٹار) علامتوں کا کیا مطلب ہے۔ ہم آپ کے کوڈ میں مختلف منظرناموں کو سنبھالنے کے لیے *args اور **kwargs استعمال کرنے کے طریقے کی عملی مثالیں بھی دیکھیں گے۔

کمانڈ تفصیل
*args کسی فنکشن کو متغیر تعداد میں پوزیشنی دلیلوں کو قبول کرنے کی اجازت دیتا ہے۔ دلائل ایک ٹیپل کے طور پر گزرے ہیں۔
**kwargs ایک فنکشن کو مطلوبہ الفاظ کے دلائل کی متغیر تعداد کو قبول کرنے کی اجازت دیتا ہے۔ دلائل ایک لغت کے طور پر گزرے ہیں۔
print() مخصوص پیغام کو کنسول یا دیگر معیاری آؤٹ پٹ ڈیوائس پر آؤٹ پٹ کرتا ہے۔
get() لغت سے مخصوص کلید سے وابستہ قدر بازیافت کرتا ہے۔ کلید نہ ملنے پر ڈیفالٹ قدر لوٹاتا ہے۔
join() ایک متعین جداکار کے ساتھ، دوبارہ قابل (مثلاً فہرست یا ٹوپل) کے عناصر کو ایک سٹرنگ میں جوڑتا ہے۔
f-string ایک فارمیٹ شدہ سٹرنگ لٹریل جو گھوبگھرالی منحنی خطوط وحدانی کے اندر کے تاثرات کو رن ٹائم پر جانچنے کی اجازت دیتا ہے۔

Python میں *args اور **kwargs میں گہرا غوطہ لگائیں۔

فراہم کردہ اسکرپٹس کو استعمال کرنے کا طریقہ بتاتے ہیں۔ *args اور **kwargs Python فنکشن کی تعریف میں۔ پہلا اسکرپٹ ایک فنکشن کی وضاحت کرتا ہے۔ foo جو دو ضروری دلائل لیتا ہے، x اور y، اس کے بعد کسی بھی تعداد میں اضافی پوزیشنی دلائل کی نمائندگی کرتے ہیں۔ *args. کال کرتے وقت foo اضافی دلائل کے ساتھ، یہ ٹوپل کے طور پر پکڑے جاتے ہیں اور پرنٹ کیے جاتے ہیں۔ یہ فنکشن کو دلائل کی مختلف تعداد کو احسن طریقے سے سنبھالنے کی اجازت دیتا ہے۔ دوسرا فنکشن، bar، دو مطلوبہ دلائل اور مطلوبہ الفاظ کے دلائل کی کسی بھی تعداد کو بذریعہ قبول کرتا ہے۔ **kwargs. یہ کلیدی الفاظ کے دلائل ایک لغت میں جمع کیے جاتے ہیں، جس سے فنکشن کو لچکدار نامی ان پٹ پر کارروائی کرنے کے قابل بنایا جاتا ہے۔

دوسری مثال اسکرپٹ متعارف کراتی ہے۔ example_function اور greet کے استعمال کو مزید واضح کرنے کے لیے افعال *args اور **kwargs. دی example_function پوزیشنی اور کلیدی الفاظ کے دلائل کو پرنٹ کرتا ہے، بالترتیب ٹیپلز اور لغات میں ان کے مجموعے کو ظاہر کرتا ہے۔ دی greet فنکشن ایک عملی استعمال کے معاملے پر روشنی ڈالتا ہے جہاں **kwargs اختیاری مطلوبہ الفاظ کے دلائل کی اجازت دیتا ہے، جیسے حسب ضرورت مبارک پیغام۔ فائدہ اٹھا کر get() پر kwargs لغت میں، فنکشن ایک ڈیفالٹ قدر فراہم کر سکتا ہے جب گریٹنگ کلیدی لفظ فراہم نہیں کیا جاتا ہے، جو حقیقی دنیا کے منظرناموں میں ان تعمیرات کو استعمال کرنے کی لچک اور طاقت کا مظاہرہ کرتا ہے۔

Python فنکشنز میں *args اور **kwargs استعمال کرنا

ازگر

def foo(x, y, *args):
    print("Required arguments:", x, y)
    print("Additional arguments:", args)

def bar(x, y, **kwargs):
    print("Required arguments:", x, y)
    print("Keyword arguments:", kwargs)

foo(1, 2, 3, 4, 5)
# Output:
# Required arguments: 1 2
# Additional arguments: (3, 4, 5)

bar(1, 2, a=3, b=4, c=5)
# Output:
# Required arguments: 1 2
# Keyword arguments: {'a': 3, 'b': 4, 'c': 5}

*args اور **kwargs کے استعمال کو سمجھنا

ازگر

def example_function(*args, **kwargs):
    print("Positional arguments:", args)
    print("Keyword arguments:", kwargs)

example_function(1, 2, 3, a="apple", b="banana")
# Output:
# Positional arguments: (1, 2, 3)
# Keyword arguments: {'a': 'apple', 'b': 'banana'}

def greet(name, *args, **kwargs):
    greeting = kwargs.get('greeting', 'Hello')
    print(f"{greeting}, {name}!")
    if args:
        print("Additional names:", ', '.join(args))

greet("Alice")
# Output: Hello, Alice!

greet("Alice", "Bob", "Charlie", greeting="Hi")
# Output:
# Hi, Alice!
# Additional names: Bob, Charlie

*args اور **kwargs کا جدید ترین استعمال

بنیادی مثالوں سے آگے، *args اور **kwargs اعلی درجے کی Python پروگرامنگ میں ناقابل یقین حد تک طاقتور ٹولز ہو سکتے ہیں۔ ایک جدید ترین استعمال کا معاملہ فنکشن ڈیکوریٹرز میں ہے۔ ڈیکوریٹرز اپنے اصل کوڈ کو تبدیل کیے بغیر افعال یا طریقوں میں ترمیم یا اضافہ کرنے کا ایک طریقہ ہیں۔ کا استعمال کرتے ہوئے *args اور **kwargsڈیکوریٹرز کو کسی بھی تعداد کے دلائل کے ساتھ کام کرنے کے لیے لکھا جا سکتا ہے، جو انہیں انتہائی لچکدار اور دوبارہ قابل استعمال بناتا ہے۔ مثال کے طور پر، لاگنگ ڈیکوریٹر کسی بھی فنکشن کو قبول کر سکتا ہے، اس کے دلائل کو لاگ کر سکتا ہے اور قیمت واپس کر سکتا ہے، اور پھر ان دلائل کو اصل فنکشن کے ذریعے منتقل کر سکتا ہے۔ *args اور **kwargs. یہ ڈیکوریٹر کو بغیر کسی ترمیم کے مختلف دستخطوں کے افعال کے ساتھ استعمال کرنے کی اجازت دیتا ہے۔

ایک اور اعلی درجے کی درخواست طبقاتی طریقوں اور وراثت کے تناظر میں ہے۔ بیس کلاس طریقہ کی وضاحت کرتے وقت جو استعمال کرتا ہے۔ *args اور **kwargs، اخذ شدہ کلاسیں اس طریقہ کو اوور رائڈ کر سکتی ہیں اور پھر بھی اضافی دلائل کو واضح طور پر درج کیے بغیر قبول کر سکتی ہیں۔ یہ کوڈ کی دیکھ بھال کو آسان بنا سکتا ہے اور لچک کو بڑھا سکتا ہے، کیونکہ بیس کلاس کو تمام ممکنہ دلائل پہلے سے جاننے کی ضرورت نہیں ہے۔ مزید برآں، *args اور **kwargs دلائل کو پیرنٹ کلاس کے طریقوں پر آگے بڑھانے کے لیے استعمال کیا جا سکتا ہے، اس بات کو یقینی بناتے ہوئے کہ بیس کلاس کی مکمل فعالیت برقرار رہے جب کہ اس کے رویے کو بڑھایا یا تبدیل کیا جائے۔

*args اور **kwargs کے بارے میں اکثر پوچھے گئے سوالات

  1. کیا ہیں *args?
  2. ان کا استعمال کسی فنکشن میں متغیر تعداد میں پوزیشنی دلیلوں کو منتقل کرنے کے لیے کیا جاتا ہے۔
  3. کیا ہیں **kwargs?
  4. وہ آپ کو ایک فنکشن میں مطلوبہ الفاظ کے دلائل کی متغیر تعداد کو منتقل کرنے کی اجازت دیتے ہیں۔
  5. کیا میں استعمال کر سکتا ہوں *args اور **kwargs ایک ساتھ؟
  6. جی ہاں، آپ دونوں کو ایک ہی فنکشن میں پوزیشنل اور کلیدی الفاظ کے دلائل کے کسی بھی امتزاج کو سنبھالنے کے لیے استعمال کر سکتے ہیں۔
  7. میں گزرے ہوئے دلائل تک کیسے رسائی حاصل کروں *args?
  8. وہ فنکشن کے اندر ٹیپل کے طور پر قابل رسائی ہیں۔
  9. میں گزرے ہوئے دلائل تک کیسے رسائی حاصل کروں **kwargs?
  10. وہ فنکشن کے اندر ایک لغت کے طور پر قابل رسائی ہیں۔
  11. میں کیوں استعمال کروں گا۔ *args?
  12. کسی فنکشن کو اس کی لچک کو بڑھاتے ہوئے، کسی بھی پوزیشن کے دلائل کو قبول کرنے کی اجازت دینا۔
  13. میں کیوں استعمال کروں گا۔ **kwargs?
  14. مطلوبہ الفاظ کے دلائل کی کسی بھی تعداد کو قبول کرنے کے لیے، جو فنکشن کو زیادہ ورسٹائل بنا سکتا ہے۔
  15. کر سکتے ہیں۔ *args اور **kwargs مختلف نام دیا جائے؟
  16. ہاں، نام کنونشنز ہیں، لیکن آپ ان کو اپنی مرضی کے مطابق نام دے سکتے ہیں۔
  17. استعمال کرنے کی عملی مثال کیا ہے۔ *args?
  18. ایک فنکشن میں متعدد اقدار کو منتقل کرنا جو ان کا خلاصہ کرتا ہے۔
  19. استعمال کرنے کی عملی مثال کیا ہے۔ **kwargs?
  20. ایک فنکشن بنانا جو کلیدی الفاظ کے دلائل سے ایک لغت بناتا ہے۔

*args اور **kwargs کے ساتھ لپیٹنا

سمجھنا اور استعمال کرنا *args اور **kwargs Python فنکشنز میں آپ کی پروگرامنگ کی مہارت کو نمایاں طور پر بہتر بنا سکتے ہیں۔ یہ ٹولز فنکشن کی تعریفوں میں اعلیٰ درجے کی لچک پیش کرتے ہیں، جس سے آپ مزید متحرک اور دوبارہ قابل استعمال کوڈ لکھ سکتے ہیں۔ ان تصورات پر عبور حاصل کر کے، آپ اپنے فنکشنز میں دلائل کی ایک وسیع رینج کو سنبھال سکتے ہیں، جس سے آپ کے کوڈ کو زیادہ قابل اطلاق اور برقرار رکھنا آسان ہو جاتا ہے۔

چاہے آپ ڈیکوریٹر لکھ رہے ہوں، کلاسوں میں وراثت کو سنبھال رہے ہوں، یا محض ایک نامعلوم تعداد میں دلائل پاس کرنا چاہتے ہو، *args اور **kwargs ضروری فعالیت فراہم کریں۔ ان خصوصیات کے ساتھ تجربہ کرتے رہیں تاکہ ان کی مکمل صلاحیتوں کو آشکار کیا جا سکے اور انہیں زیادہ موثر اور طاقتور Python پروگرامنگ کے لیے اپنے کوڈنگ کے طریقوں میں ضم کریں۔