ပြင်နည်း- syntaxerror- positional argument သည် keyword argument ကို လိုက်နာသည်။
Python တွင် သင်ကြုံတွေ့ရသော အမှားတစ်ခုမှာ-
SyntaxError : positional argument follows keyword argument
သော့ချက်စာလုံးအငြင်းအခုံ ကိုအသုံးပြုပြီးနောက် function တစ်ခုတွင် positional argument ကို အသုံးပြုသောအခါ ဤအမှားသည် ဖြစ်ပေါ်လာပါသည်။
ဤသည်မှာ ၎င်းတို့နှစ်ခုကြား ခြားနားချက်ဖြစ်သည်-
Positional arguments များ သည် ၎င်းတို့ ၏ ရှေ့ တွင် “သော့ စကားလုံး” မပါရှိ ကြ ပေ။
- ဥပမာ- my_function(2၊ 2)
သော့ချက်စကားလုံးအငြင်းအခုံ များသည် ၎င်းတို့ရှေ့တွင် “သော့ချက်စကားလုံး” ရှိသည်။
- ဥပမာ- my_function(a=2၊ b=2)
သော့ချက်စာလုံးအငြင်းအခုံတစ်ခုပြီးနောက် positional argument ကိုအသုံးပြုပါက Python သည် error တစ်ခုအား ထုတ်ပစ်မည်ဖြစ်သည်။
- ဥပမာ- my_function(a=2၊ 2)
အောက်ဖော်ပြပါ ဥပမာတွင် ဤအမှားသည် လက်တွေ့တွင် မည်သို့ဖြစ်ပွားနိုင်သည်ကို ပြသသည်။
ဥပမာ- positional argument သည် keyword argument ၏ နောက်တွင် ရှိနေသည်။
Python တွင် အောက်ပါ function သည် တန်ဖိုးနှစ်ခုကို မြှောက်ပြီး သုံးပုံတစ်ပုံဖြင့် ပိုင်းမည်ဆိုပါစို့။
def do_stuff (a,b):
return a*b/c
အောက်ပါနမူနာများသည် ဤလုပ်ဆောင်ချက်ကို အသုံးပြုရန် အကျုံးဝင်ပြီး မမှန်ကန်သော နည်းလမ်းများကို ပြသသည်-
အကျုံးဝင်သောနည်းလမ်း နံပါတ် 1- အနေအထားဆိုင်ရာ အကြောင်းပြချက်များအားလုံး
အောက်ဖော်ပြပါကုဒ်သည် ကျွန်ုပ်တို့၏လုပ်ဆောင်ချက်ကို တည်နေရာဆိုင်ရာ အကြောင်းပြချက်များအားလုံးဖြင့် မည်သို့အသုံးပြုရမည်ကို ပြသသည်-
do_stuff ( 4,10,5 )
8.0
လုပ်ဆောင်ချက်အငြင်းအခုံတစ်ခုစီအတွက် Python သည် အသုံးပြုရမည့်တန်ဖိုးများကို အတိအကျသိသောကြောင့် အမှားအယွင်းများကို ထုတ်ပေးခြင်းမရှိပါ။
မှန်ကန်သောနည်းလမ်း #2- သော့ချက်စကားလုံးအငြင်းပွားမှုအားလုံး
အောက်ဖော်ပြပါ ကုဒ်သည် ကျွန်ုပ်တို့၏ လုပ်ဆောင်ချက်ကို သော့ချက်စကားလုံး အငြင်းအခုံများအားလုံးဖြင့် မည်သို့အသုံးပြုရမည်ကို ပြသသည်-
do_stuff(a= 4 , b= 10 , c= 5 )
8.0
နောက်တဖန်၊ Python သည် function argument တစ်ခုစီအတွက် အသုံးပြုရမည့်တန်ဖိုးများကို အတိအကျသိသောကြောင့် အမှားအယွင်းများမပြုလုပ်ရပါ။
မှန်ကန်သောနည်းလမ်း #3- သော့ချက်စကားလုံးအငြင်းပွားမှုများမတိုင်မီ အနေအထားဆိုင်ရာ အကြောင်းပြချက်များ
အောက်ဖော်ပြပါ ကုဒ်သည် သော့ချက်စကားလုံး အကြောင်းပြချက်များ မတိုင်မီ အသုံးပြုသည့် နေရာဆိုင်ရာ အငြင်းအခုံများဖြင့် ကျွန်ုပ်တို့၏ လုပ်ဆောင်ချက်ကို မည်သို့ အသုံးပြုရမည်ကို ပြသသည်-
do_stuff( 4 ,b= 10 ,c= 5 )
8.0
တန်ဘိုး 4 ကို အငြင်းအခုံ တစ်ခုတွင် သတ်မှတ်ပေးသင့်သည်ဟု Python မှသိသောကြောင့် Error မရှိပါ။
မမှန်ကန်သောနည်းလမ်း- သော့ချက်စကားလုံးအငြင်းပွားမှုများပြီးနောက် နေရာဆိုင်ရာ အကြောင်းပြချက်များ
အောက်ဖော်ပြပါ ကုဒ်သည် သော့ချက်စကားလုံး အငြင်းအခုံများ ပြီးနောက် အသုံးပြုသည့် နေရာဆိုင်ရာ အငြင်းအခုံများဖြင့် လုပ်ဆောင်ချက်ကို မည်သို့အသုံးပြုရန် ကြိုးပမ်းနိုင်သည်ကို ပြသသည်-
do_stuff(a= 4 , 10 , 5 )
SyntaxError : positional argument follows keyword argument
သော့ချက်စကားလုံးအငြင်းပွားမှုများပြီးနောက် တည်နေရာဆိုင်ရာ အကြောင်းပြချက်များကို အသုံးပြုထားသောကြောင့် အမှားအယွင်းဖြစ်သွားသည်။
အတိအကျအားဖြင့်၊ Python သည် တန်ဖိုးများ 10 နှင့် 5 ကို arguments b သို့မဟုတ် c တွင် သတ်မှတ်သင့်သည်ဆိုသည်ကို မသိသောကြောင့် ၎င်းသည် လုပ်ဆောင်ချက်ကို လုပ်ဆောင်၍မရပါ။
ထပ်လောင်းအရင်းအမြစ်များ
အောက်ဖော်ပြပါ သင်ခန်းစာများသည် Python ရှိ အခြားသော ဘုံအမှားများကို မည်သို့ပြုပြင်ရမည်ကို ရှင်းပြသည်-
Pandas တွင် KeyError ကိုဘယ်လိုပြင်မလဲ။
ပြင်ဆင်နည်း- ValueError- float NaN ကို int သို့ ပြောင်းလဲ၍မရပါ။
ပြုပြင်နည်း- တန်ဖိုးအမှား- Operands များကို ပုံသဏ္ဍာန်များဖြင့် ထုတ်လွှင့်၍မရပါ။