Python တွင် စာရင်းများ (arrays)၊ tuples နှင့် အဘိဓာန်များကို ချဲ့ထွင်နိုင်သည် (ထုပ်ပိုးထားသော) နှင့် ၎င်းတို့၏ သက်ဆိုင်ရာဒြပ်စင်များကို function arguments များအဖြစ် အတူတကွဖြတ်သန်းနိုင်သည်။
လုပ်ဆောင်ချက်တစ်ခုကို ခေါ်ဆိုသောအခါ၊ အဘိဓာန်များအတွက် * for lists and tuples နှင့် ** for argument ကို သတ်မှတ်ပါ။ ကြယ်ပွင့်များ * အရေအတွက်ကို မှတ်သားပါ။
အောက်ပါအသေးစိတ်အချက်အလက်များကို ဤနေရာတွင် ဖော်ပြထားပါသည်။
- * (ခရေပွင့်တစ်ခု) ဖြင့် စာရင်းတစ်ခု သို့မဟုတ် tuple ကို ချဲ့ထွင်ပါ
- မူရင်းအငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်
- ပြောင်းလဲနိုင်သော-အရှည်အငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်
- ** (ကြယ်ပွင့်နှစ်ခု) ဖြင့် အဘိဓာန်ကို ချဲ့ထွင် (ထုပ်ပိုးပါ)
- မူရင်းအငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်
- ပြောင်းလဲနိုင်သော-အရှည်အငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်
လုပ်ဆောင်ချက်များကို သတ်မှတ်သည့်အခါ Python လုပ်ဆောင်ချက်များ၊ မူရင်းအငြင်းအခုံများနှင့် ပြောင်းလဲနိုင်သော အရှည်အငြင်းအခုံများအတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။
- ဆက်စပ်-Python လုပ်ဆောင်ချက်များတွင် ပုံသေအငြင်းအခုံများကို မည်သို့အသုံးပြု၍ မှတ်သားနည်း
- ဆက်စပ်-Python တွင် variable length arguments ကိုအသုံးပြုနည်း(
*args
၊**kwargs
)
* (ခရေပွင့်တစ်ခု) ဖြင့် စာရင်းတစ်ခု သို့မဟုတ် tuple ကို ချဲ့ထွင်ပါ
စာရင်း သို့မဟုတ် tuple ကို * ဖြင့် အငြင်းအခုံအဖြစ် သတ်မှတ်သောအခါ၊ ၎င်းကို ချဲ့ထွင်ပြီး ဒြပ်စင်တစ်ခုစီကို သီးခြားအငြင်းအခုံတစ်ခုအဖြစ် ကျော်သွားပါသည်။
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
အောက်ပါရှင်းပြချက်သည် စာရင်းတစ်ခုအတွက်ဖြစ်သည်၊ သို့သော် tuple တစ်ခုနှင့် အတူတူပင်ဖြစ်သည်။
ဒြပ်စင်အရေအတွက်သည် အငြင်းအခုံအရေအတွက်နှင့် မကိုက်ညီပါက၊ 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 ကို ** ဖြင့် အငြင်းအခုံတစ်ခုအဖြစ် သတ်မှတ်သောအခါ၊ ဒြပ်စင်ခလုတ်များကို argument တန်ဖိုးများအဖြစ် argument တန်ဖိုးများအဖြစ် ချဲ့ထွင်ပြီး တစ်ခုစီကို သီးခြား argument တစ်ခုအဖြစ် ဖြတ်သန်းပါသည်။
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'}