பைத்தானில், பட்டியல்கள் (வரிசைகள்), டூப்பிள்கள் மற்றும் அகராதிகள் விரிவுபடுத்தப்படலாம் (தொகுக்கப்படாதது) மற்றும் அவற்றின் உறுப்புகளை செயல்பாட்டு வாதங்களாக ஒன்றாக அனுப்பலாம்.
ஒரு செயல்பாட்டை அழைக்கும் போது, பட்டியல்கள் மற்றும் டூப்பிள்களுக்கு ** மற்றும் அகராதிகளுக்கு ** உடன் வாதத்தைக் குறிப்பிடவும். நட்சத்திரக் குறியீடுகளின் எண்ணிக்கையைக் கவனியுங்கள் *.
பின்வரும் விவரங்கள் இங்கே விவரிக்கப்பட்டுள்ளன.
- * (ஒரு நட்சத்திரம்) உடன் பட்டியலை அல்லது டூப்பிளை விரிவாக்கு (திறக்கவும்)
- இயல்புநிலை மதிப்புருக்கள் கொண்ட செயல்பாடுகளுக்கு
- மாறி-நீள வாதங்களைக் கொண்ட செயல்பாடுகளுக்கு
- ** (இரண்டு நட்சத்திரக் குறியீடுகள்) மூலம் அகராதியை விரிவுபடுத்தவும் (திறக்கவும்)
- இயல்புநிலை மதிப்புருக்கள் கொண்ட செயல்பாடுகளுக்கு
- மாறி-நீள வாதங்களைக் கொண்ட செயல்பாடுகளுக்கு
செயல்பாடுகளை வரையறுக்கும் போது பைதான் செயல்பாடுகள், இயல்புநிலை வாதங்கள் மற்றும் *,** உடன் மாறி நீள வாதங்களின் அடிப்படை பயன்பாட்டிற்கு பின்வரும் கட்டுரையைப் பார்க்கவும்.
- தொடர்புடையது:பைதான் செயல்பாடுகளில் இயல்புநிலை வாதங்களை எவ்வாறு பயன்படுத்துவது மற்றும் குறிப்பது
- தொடர்புடையது:பைத்தானில் மாறி நீள வாதங்களை எவ்வாறு பயன்படுத்துவது(
*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'}