လွယ်လွယ်ပြောရရင် function ဆိုတာ code အပိုင်းတစ်ခုကို နာမည်တပ်ပြီး သိမ်းထားတာ။ အဲဒီ နာမည်ကို ခေါ်လိုက်တိုင်း သိမ်းထားတဲ့ code တွေ အလုပ်လုပ်တယ်။ တစ်ခါရေး၊ အကြိမ်ကြိမ် သုံး။

ဥပမာ ဟင်းချက်နည်းစာရွက်ကို စဉ်းစားကြည့်ပါ။ “ကြက်ဥကြော်” ဆိုတဲ့ စာရွက်မှာ အဆင့် ၅ ဆင့် ရေးထားတယ် — ဒယ်အိုးတင်၊ ဆီထည့်၊ ကြက်ဥဖောက်၊ ဆားထည့်၊ ကြော်။ နောက်တစ်ခါ ကြက်ဥကြော် ချက်ချင်ရင် အဆင့် ၅ ဆင့် ပြန်မစဉ်းစားဘူး — “ကြက်ဥကြော်” ဆိုတဲ့ စာရွက်ကို ထုတ်ကြည့်ရုံပဲ။

Function လည်း ဒီအတိုင်းပါပဲ။ အလုပ်တစ်ခုကို တစ်ခါ ရေးထားပြီး နာမည်ပေးထားတယ် — လိုတိုင်း နာမည်ခေါ်ရုံပဲ။

Python မှာ ဒီလိုရေးတယ်။


def greet(name):
    print("မင်္ဂလာပါ၊ " + name + "!")

def ဆိုတာ “ဒါ function အသစ်” လို့ ကြေညာတာ။ greet က နာမည်။ name က parameter — function ကို ခေါ်တဲ့အခါ ထည့်ပေးရမဲ့ အရာ။


greet("Aung")   # မင်္ဂလာပါ၊ Aung!
greet("Su")     # မင်္ဂလာပါ၊ Su!
greet("Min")    # မင်္ဂလာပါ၊ Min!

print("မင်္ဂလာပါ၊ " + name + "!") ဆိုတဲ့ စာကြောင်းကို ၃ ခါ ပြန်မရေးရဘူး — greet(...) လို့ တစ်ကြောင်းတည်း ခေါ်ရုံပဲ။ လူ ၁၀၀ ကို နှုတ်ဆက်ချင်ရင် စာကြောင်း ၁၀၀ မရေးရတော့ဘူး။

Parameter နဲ့ Return

Function ကို ခေါ်တဲ့အခါ ထည့်ပေးတာ argument၊ function ဘက်က လက်ခံတာ parameter — အခေါ်သာ ကွဲတာ၊ အတူတူပဲ။

ပြီးတော့ function က အဖြေလည်း ပြန်ပေးလို့ရတယ် — return နဲ့။


def add(a, b):
    return a + b

result = add(3, 5)   # result ထဲမှာ 8 ရောက်မယ်
print(result)        # 8

print က screen ပေါ် ပြတာ၊ return က တန်ဖိုးကို ပြန်ပေးတာ — နှစ်ခု မတူဘူး။ အရင်က variable အကြောင်း ရေးတုန်းက ဗူးနဲ့ ဥပမာပေးဖူးတယ် — return က function က ဗူးထဲ ပစ္စည်းထည့်ပေးလိုက်သလိုမျိုး၊ print က ပစ္စည်းကို ထုတ်ပြလိုက်သလိုမျိုး။

ဘာလို့ သုံးရတာလဲ?

ထပ်မရေးရ — အမှားပြင်ချင်ရင် တစ်နေရာတည်း ပြင်ရုံပဲ။ နေရာ ၁၀ ခုမှာ ကူးရေးထားရင် ၁၀ ခုလုံး လိုက်ပြင်ရမယ်။
ဖတ်ရလွယ် — calculate_total() လို့ တွေ့တာနဲ့ “အော်၊ စုစုပေါင်း တွက်တာပဲ” လို့ သိတယ်။ code အရှည် ၂၀ ကြောင်းကို လိုက်ဖတ်စရာ မလိုဘူး။
စမ်းရလွယ် — function တစ်ခုချင်းစီကို သီးသန့် စမ်းလို့ရတယ်။

စတင်သူတွေ သတိထားစရာ

နာမည်ကို အဓိပ္ပာယ်ရှိရှိ ပေး — f1, my_func ထက် calculate_total, send_email က ပိုရှင်းတယ်။
function တစ်ခုက အလုပ်တစ်မျိုးပဲ လုပ် — ဟင်းချက်ရင်း အဝတ်ပါ လျှော်တဲ့ စာရွက်မျိုး မဖြစ်စေနဲ့။
အရမ်း အကြာကြီး မရေးနဲ့ — စာကြောင်း ၂၀ ကျော်လာရင် နှစ်ပိုင်း ခွဲဖို့ စဉ်းစားပါ။

ကိုယ့် code မှာ တူညီတဲ့ အပိုင်းတွေ ၂ ခါထက် ပိုတွေ့ရင် အဲဒါ function ထုတ်ဖို့ အချိန်ရောက်ပြီ။ “နှစ်ခါ ရေးမိရင် function ထုတ်” — ဒီ စည်းမျဉ်းလေး မှတ်ထားပါ။ နောက်တစ်ခါ code ရေးတဲ့အခါ ကိုယ့်ဟာကိုယ် မေးကြည့်လိုက် — “ဒီအပိုင်း ထပ်သုံးဦးမလား?” လို့။ သုံးဦးမယ်ဆိုရင် function လုပ်ထားလိုက် — နောင်တမရစေရဘူး။ 😉