पाइथनमा प्रकार्य तर्कहरूको रूपमा सूचीहरू, टपलहरू, र शब्दकोशहरू विस्तार र पास गर्दै

व्यापार

पाइथनमा, सूचीहरू (एरेहरू), ट्युपलहरू, र शब्दकोशहरू विस्तार गर्न सकिन्छ (अनप्याक गरिएको) र तिनीहरूका सम्बन्धित तत्वहरू प्रकार्य तर्कहरूको रूपमा सँगै पास गर्न सकिन्छ।

कुनै प्रकार्यलाई कल गर्दा, सूचिहरू र टपल्सका लागि * र शब्दकोशहरूका लागि ** सँग तर्क निर्दिष्ट गर्नुहोस्। तारा चिन्ह * को संख्या नोट गर्नुहोस्।

निम्न विवरणहरू यहाँ वर्णन गरिएको छ।

  • एउटा सूची विस्तार गर्नुहोस् (अनप्याक गर्नुहोस्) वा * (एउटा तारा चिन्ह) को साथ टपल
    • पूर्वनिर्धारित तर्क संग कार्यहरु को लागी
    • चल-लम्बाइ आर्गुमेन्टहरू भएका प्रकार्यहरूका लागि
  • ** (दुई एस्टेरिस्क) सँग शब्दकोश विस्तार गर्नुहोस् (अनप्याक गर्नुहोस्)
    • पूर्वनिर्धारित तर्क संग कार्यहरु को लागी
    • चल-लम्बाइ आर्गुमेन्टहरू भएका प्रकार्यहरूका लागि

प्रकार्यहरू परिभाषित गर्दा पाइथन प्रकार्यहरू, पूर्वनिर्धारित तर्कहरू, र *,** सँग चल लम्बाइ तर्कहरूको आधारभूत प्रयोगको लागि निम्न लेख हेर्नुहोस्।

एउटा सूची विस्तार गर्नुहोस् (अनप्याक गर्नुहोस्) वा * (एउटा तारा चिन्ह) को साथ टपल

जब सूची वा टपल * सँग तर्कको रूपमा निर्दिष्ट गरिन्छ, यसलाई विस्तार गरिन्छ र प्रत्येक तत्वलाई छुट्टै तर्कको रूपमा पारित गरिन्छ।

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')

** (दुई एस्टेरिस्क) सँग शब्दकोश विस्तार गर्नुहोस् (अनप्याक गर्नुहोस्)

जब एक शब्दकोश dict ** सँग तर्कको रूपमा निर्दिष्ट गरिन्छ, तत्व कुञ्जीहरूलाई तर्क नामहरू र मानहरूलाई तर्क मानहरूको रूपमा विस्तार गरिन्छ, र प्रत्येकलाई छुट्टै तर्कको रूपमा पारित गरिन्छ।

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