पायथनमध्ये, याद्या (अॅरे), ट्युपल्स आणि डिक्शनरी विस्तारित केल्या जाऊ शकतात (अनपॅक केलेले) आणि त्यांचे संबंधित घटक फंक्शन आर्ग्युमेंट्स म्हणून एकत्र केले जाऊ शकतात.
फंक्शन कॉल करताना, याद्या आणि ट्यूपल्ससाठी * आणि शब्दकोशांसाठी ** सह युक्तिवाद निर्दिष्ट करा. तारकांची संख्या लक्षात घ्या *.
खालील तपशील येथे वर्णन केले आहेत.
- सूची विस्तृत करा (अनपॅक करा) किंवा * (एक तारका) सह ट्यूपल
- डीफॉल्ट आर्ग्युमेंटसह फंक्शन्ससाठी
- व्हेरिएबल-लेंथ आर्ग्युमेंटसह फंक्शन्ससाठी
- ** (दोन तारांकित) सह शब्दकोश विस्तृत करा (अनपॅक करा)
- डीफॉल्ट आर्ग्युमेंटसह फंक्शन्ससाठी
- व्हेरिएबल-लेंथ आर्ग्युमेंटसह फंक्शन्ससाठी
फंक्शन्स परिभाषित करताना पायथन फंक्शन्स, डीफॉल्ट आर्ग्युमेंट्स आणि *,** सह व्हेरिएबल लेन्थ आर्ग्युमेंट्सच्या मूलभूत वापरासाठी खालील लेख पहा.
- संबंधित:पायथन फंक्शन्समध्ये डीफॉल्ट वितर्क कसे वापरायचे आणि लक्षात घ्या
- संबंधित:पायथनमध्ये व्हेरिएबल लांबीचे युक्तिवाद कसे वापरायचे(
*args
,**kwargs
)
सूची विस्तृत करा (अनपॅक करा) किंवा * (एक तारका) सह ट्यूपल
जेव्हा सूची किंवा ट्यूपल * सह वितर्क म्हणून निर्दिष्ट केले जाते, तेव्हा ते विस्तृत केले जाते आणि प्रत्येक घटक स्वतंत्र वितर्क म्हणून पास केला जातो.
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'}