Python میں فنکشن آرگیومینٹس کے طور پر فہرستوں، ٹیپلز، اور لغات کو پھیلانا اور منتقل کرنا

کاروبار

Python میں، فہرستوں (ارے)، tuples، اور لغات کو بڑھایا جا سکتا ہے (بغیر پیک شدہ) اور ان کے متعلقہ عناصر کو فنکشن دلائل کے طور پر ایک ساتھ پاس کیا جا سکتا ہے۔

کسی فنکشن کو کال کرتے وقت، * لسٹوں اور ٹیپلز کے لیے اور لغات کے لیے ** کے ساتھ دلیل کی وضاحت کریں۔ ستاروں کی تعداد نوٹ کریں *۔

مندرجہ ذیل تفصیلات یہاں بیان کی گئی ہیں۔

  • فہرست کو پھیلائیں (پیک کھولیں) یا * (ایک ستارہ) کے ساتھ ٹیپل کریں
    • پہلے سے طے شدہ دلائل والے فنکشنز کے لیے
    • متغیر کی لمبائی کے دلائل والے فنکشنز کے لیے
  • ** (دو ستارے) کے ساتھ لغت کو پھیلائیں (پیک کھولیں)
    • پہلے سے طے شدہ دلائل والے فنکشنز کے لیے
    • متغیر کی لمبائی کے دلائل والے فنکشنز کے لیے

فنکشنز کی وضاحت کرتے وقت Python فنکشنز، ڈیفالٹ آرگیومینٹس، اور متغیر طوالت کے دلائل *,** کے بنیادی استعمال کے لیے درج ذیل مضمون دیکھیں۔

فہرست کو پھیلائیں (پیک کھولیں) یا * (ایک ستارہ) کے ساتھ ٹیپل کریں

جب کسی فہرست یا ٹوپل کو * کے ساتھ دلیل کے طور پر بیان کیا جاتا ہے، تو اسے بڑھا دیا جاتا ہے اور ہر عنصر کو الگ دلیل کے طور پر پاس کیا جاتا ہے۔

def func(arg1, arg2, arg3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

l = ['one', 'two', 'three']

func(*l)
# arg1 = one
# arg2 = two
# arg3 = three

func(*['one', 'two', 'three'])
# arg1 = one
# arg2 = two
# arg3 = three

t = ('one', 'two', 'three')

func(*t)
# arg1 = one
# arg2 = two
# arg3 = three

func(*('one', 'two', 'three'))
# arg1 = one
# arg2 = two
# arg3 = three

مندرجہ ذیل وضاحت ایک فہرست کے لیے ہے، لیکن وہی ایک ٹوپل پر لاگو ہوتا ہے۔

اگر عناصر کی تعداد دلائل کی تعداد سے مماثل نہیں ہے تو، ایک TypeError غلطی واقع ہوتی ہے۔

# func(*['one', 'two'])
# TypeError: func() missing 1 required positional argument: 'arg3'

# func(*['one', 'two', 'three', 'four'])
# TypeError: func() takes 3 positional arguments but 4 were given

پہلے سے طے شدہ دلائل والے فنکشنز کے لیے

اگر ڈیفالٹ دلیل سیٹ کی جاتی ہے، تو ڈیفالٹ دلیل استعمال کی جاتی ہے اگر عناصر کی تعداد ناکافی ہو۔ اگر عناصر کی تعداد بہت زیادہ ہے تو، ایک TypeError کی خرابی واقع ہوتی ہے۔

def func_default(arg1=1, arg2=2, arg3=3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

func_default(*['one', 'two'])
# arg1 = one
# arg2 = two
# arg3 = 3

func_default(*['one'])
# arg1 = one
# arg2 = 2
# arg3 = 3

# func_default(*['one', 'two', 'three', 'four'])
# TypeError: func_default() takes from 0 to 3 positional arguments but 4 were given

متغیر کی لمبائی کے دلائل والے فنکشنز کے لیے

اگر متغیر کی لمبائی والی دلیل سیٹ کی جاتی ہے، تو پوزیشنی دلیل کے عنصر کے بعد تمام عناصر متغیر کی لمبائی والی دلیل کو بھیجے جاتے ہیں۔

def func_args(arg1, *args):
    print('arg1 =', arg1)
    print('args =', args)

func_args(*['one', 'two'])
# arg1 = one
# args = ('two',)

func_args(*['one', 'two', 'three'])
# arg1 = one
# args = ('two', 'three')

func_args(*['one', 'two', 'three', 'four'])
# arg1 = one
# args = ('two', 'three', 'four')

** (دو ستارے) کے ساتھ لغت کو پھیلائیں (پیک کھولیں)

جب ایک لغت ڈکٹ کو ** کے ساتھ دلیل کے طور پر بیان کیا جاتا ہے، عنصر کی کلیدوں کو دلیل کے ناموں اور قدروں کو دلیل کی قدروں کے طور پر بڑھایا جاتا ہے، اور ہر ایک کو الگ دلیل کے طور پر پاس کیا جاتا ہے۔

def func(arg1, arg2, arg3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

d = {'arg1': 'one', 'arg2': 'two', 'arg3': 'three'}

func(**d)
# arg1 = one
# arg2 = two
# arg3 = three

func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# arg2 = two
# arg3 = three

اگر کوئی کلید نہیں ہے جو دلیل کے نام سے مماثل ہے یا کوئی ایسی کلید ہے جو مماثل نہیں ہے تو، ایک TypeError کی خرابی پیدا ہوگی۔

# func(**{'arg1': 'one', 'arg2': 'two'})
# TypeError: func() missing 1 required positional argument: 'arg3'

# func(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# TypeError: func() got an unexpected keyword argument 'arg4'

پہلے سے طے شدہ دلائل والے فنکشنز کے لیے

تصویر جس میں صرف دلیل کے ناموں کی اقدار کو اپ ڈیٹ کیا گیا ہے جو لغت کی کلیدوں سے مماثل ہیں۔

ایک کلید جو دلیل کے نام سے مماثل نہیں ہے اس کے نتیجے میں TypeError کی خرابی ہوگی۔

def func_default(arg1=1, arg2=2, arg3=3):
    print('arg1 =', arg1)
    print('arg2 =', arg2)
    print('arg3 =', arg3)

func_default(**{'arg1': 'one'})
# arg1 = one
# arg2 = 2
# arg3 = 3

func_default(**{'arg2': 'two', 'arg3': 'three'})
# arg1 = 1
# arg2 = two
# arg3 = three

# func_default(**{'arg1': 'one', 'arg4': 'four'})
# TypeError: func_default() got an unexpected keyword argument 'arg4'

متغیر کی لمبائی کے دلائل والے فنکشنز کے لیے

اگر متغیر-لمبائی کے دلائل سیٹ کیے جاتے ہیں، تو دلیل کے نام کے علاوہ کلید کے ساتھ کوئی بھی عنصر متغیر-لمبائی دلیل کو منتقل کیا جاتا ہے۔

def func_kwargs(arg1, **kwargs):
    print('arg1 =', arg1)
    print('kwargs =', kwargs)

func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three'}

func_kwargs(**{'arg1': 'one', 'arg2': 'two', 'arg3': 'three', 'arg4': 'four'})
# arg1 = one
# kwargs = {'arg2': 'two', 'arg3': 'three', 'arg4': 'four'}

func_kwargs(**{'arg1': 'one', 'arg3': 'three'})
# arg1 = one
# kwargs = {'arg3': 'three'}
Copied title and URL