Lambdas ကတော့ anonymous function ဆောက်တဲ့နေရာတွေမှာ သုံးပါတယ်။တစ်ကြောင်းထဲနဲ့ရေးလို့ရတော့ ပိုလဲတိုတယ် အဆင်လဲပြေတယ်ပေါ့နော်။ကျွန်တေ်ာတို့ lambdas function တွေက def keyword သုံးပြီးရေးတဲ့ function တွေလိုပါပဲ ကျွန်တော်တို့ name ပေးဖို့မလိုတာပဲရှိပါတယ်။ဥပမာ
def sum(a,b):
return a + b
lambda_sum = lambda x,y: x + y
print(sum(5,3))
print(lambda_sum(5,3))
ကျွန်တော်တို့ def တွေကတော့ name ပေးရတယ် lambda နဲ့ဆိုရင်တော့ nameပေးစရာမလိုပါဘူး။အောက်ကတော့ lambda ရေးတဲ့ပုံစံပါ
Syntax
lambda arguments : expression
ကျွန်တော်တို့lamda အရှေ့က ဟာတွေx,y ကကျွန်တော်တို့ ထည့်ပေးလို့ရတဲ့ arguments တွေပါ အခု ကျွန်တေ်ာတို့ 5,3 ကိုထည့်ပေးလိုကတော့ နောက်က expression ကပေါင်းပြီးပြန်ပို့ပေးပါတယ်အဖြေကို။
ကျွန်တော်တို့ရေးရတာတိုတယ် မြန်တယ်ဆိုပြီးနေရာတကာလိုက်သုံးနေရင်တော့ အဆင်မပြေပါဘူး။အဲ့တော့မရေးခင်စဉ်းစားပါ maintainလုပ်ဖို့လွယ်လားနောက်လူကကော error ရှာရလွယ်နိုင်လားဆိုတာ။
data = [(1, 'd'), (2, 'b'), (4, 'a'), (3, 'c')]
sorted_data = sorted(data, key=lambda x: x[1])
print(sorted_data)
Output: [(4, 'a'), (2, 'b'), (3, 'c'), (1, 'd')]
ကျွန်တော်တို့ sorting စီတဲ့နေရာမှာ lambda တွေကို key အနေနဲ့သုံးတာကအဆင်ပြေပါတယ်။ဒါကတော့ တစ်ချို့လူတွေရေးလေ့ရေးထရှိတဲ့ ပုံစံမျိုးပါ။ function ထဲမှာ lambda expression ကိုသုံးထားတာပါ။
def mul(a):
return lambda b: b * a
multi = mul(5)
print(multi(3))
Output: 15
ကျွန်တော်တို့ mul ဆိုတဲ့ function ကိုခေါ်လိုကတဲ့အခါ နောက်ထပ် anonymous function က multi ထဲကိုပြန်ရောက်လာပြီး နောက်ထပ်အထဲက anonymous functionကိုပြန်ခေါ်လိုက်တာပါ။ဒီနေရာမှာ နဂိုထည့်ထားတဲ့ a ကိုခေါ်လို့ရတာလေးပဲဆန်းတာပါ။
# Harmful:
>>> list(filter(lambda x: x % 2 == 0, range(10)))
[0, 2, 4, 6, 8]
# Better:
>>> [x for x in range(10) if x % 2 == 0]
[0, 2, 4, 6, 8]
အပေါ်ကလိုမျိုးအဲ့လိုတော့ မသုံးမိပါစေနဲ့။list comprehension ကပိုအဆင်ပြေပါတယ် နားလည်ရလဲလွယ်ပါတယ်။အားလုံးကျေးဇူးတင်ပါတယ်။