Lambda Keyword In Python

2009 views Dec 04, 2024

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 ကပိုအဆင်ပြေပါတယ် နားလည်ရလဲလွယ်ပါတယ်။အားလုံးကျေးဇူးတင်ပါတယ်။