Python ရှိ လုပ်ဆောင်ချက် အကြောင်းပြချက်များအဖြစ် စာရင်းများ၊ tuples နှင့် အဘိဓာန်များကို ချဲ့ထွင်ခြင်းနှင့် ဖြတ်သန်းခြင်း။

စီးပွားရေးလုပ်ငန်း

Python တွင် စာရင်းများ (arrays)၊ tuples နှင့် အဘိဓာန်များကို ချဲ့ထွင်နိုင်သည် (ထုပ်ပိုးထားသော) နှင့် ၎င်းတို့၏ သက်ဆိုင်ရာဒြပ်စင်များကို function arguments များအဖြစ် အတူတကွဖြတ်သန်းနိုင်သည်။

လုပ်ဆောင်ချက်တစ်ခုကို ခေါ်ဆိုသောအခါ၊ အဘိဓာန်များအတွက် * for lists and tuples နှင့် ** for argument ကို သတ်မှတ်ပါ။ ကြယ်ပွင့်များ * အရေအတွက်ကို မှတ်သားပါ။

အောက်ပါအသေးစိတ်အချက်အလက်များကို ဤနေရာတွင် ဖော်ပြထားပါသည်။

  • * (ခရေပွင့်တစ်ခု) ဖြင့် စာရင်းတစ်ခု သို့မဟုတ် tuple ကို ချဲ့ထွင်ပါ
    • မူရင်းအငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်
    • ပြောင်းလဲနိုင်သော-အရှည်အငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်
  • ** (ကြယ်ပွင့်နှစ်ခု) ဖြင့် အဘိဓာန်ကို ချဲ့ထွင် (ထုပ်ပိုးပါ)
    • မူရင်းအငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်
    • ပြောင်းလဲနိုင်သော-အရှည်အငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်များအတွက်

လုပ်ဆောင်ချက်များကို သတ်မှတ်သည့်အခါ Python လုပ်ဆောင်ချက်များ၊ မူရင်းအငြင်းအခုံများနှင့် ပြောင်းလဲနိုင်သော အရှည်အငြင်းအခုံများအတွက် အောက်ပါဆောင်းပါးကို ကြည့်ပါ။

* (ခရေပွင့်တစ်ခု) ဖြင့် စာရင်းတစ်ခု သို့မဟုတ် 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'}