পাইথনে ল্যাম্বডা ফাংশন হলো একটি ছোট, অস্থায়ী ফাংশন যা এক লাইনে লেখা হয় এবং সাধারণত একবারের জন্য ব্যবহার করা হয়। এটি lambda কীওয়ার্ড দিয়ে তৈরি করা হয়। ল্যাম্বডা ফাংশনকে কখনও কখনও অ্যানোনিমাস ফাংশন (নামবিহীন ফাংশন) বলা হয়, কারণ এটি কোনো নাম ধারণ করে না।
ল্যাম্বডা ফাংশনের সিনট্যাক্স
lambda parameters: expression
- parameters: এখানে ফাংশনের ইনপুট প্যারামিটারগুলো থাকে (যেমন,
x,yইত্যাদি)। - expression: এখানে ফাংশন কী আউটপুট দেবে তা নির্ধারণ করা হয়। এটি এক লাইনের মধ্যে সীমাবদ্ধ।
সাধারণ উদাহরণ
ধরা যাক, আমরা একটি সংখ্যা ২ দিয়ে গুণ করতে চাই। সাধারণ ফাংশন দিয়ে এটি করা যেতো:
def multiply_by_2(x):
return x * 2
print(multiply_by_2(5)) # আউটপুট: 10
ল্যাম্বডা ফাংশনের মাধ্যমে এটিকে সংক্ষিপ্তভাবে লেখা যাবে:
multiply_by_2 = lambda x: x * 2
print(multiply_by_2(5)) # আউটপুট: 10
ল্যাম্বডা ফাংশনের ব্যবহার
ল্যাম্বডা ফাংশন সাধারণত তখনই ব্যবহৃত হয় যখন একটি ছোট ফাংশন প্রয়োজন হয়, এবং এটি শুধুমাত্র একবার ব্যবহৃত হবে। কিছু সাধারণ উদাহরণ:
১. একাধিক প্যারামিটার সহ ল্যাম্বডা ফাংশন
add = lambda x, y: x + y
print(add(3, 5)) # আউটপুট: 8
২. লিস্টের উপাদানগুলো সাজানো (Sorting) করতে
ল্যাম্বডা ফাংশন sort() বা sorted() ফাংশনের সাথে কাস্টম কন্ডিশন ব্যবহার করতে সহায়ক।
students = [("Alice", 25), ("Bob", 20), ("Charlie", 23)]
students.sort(key=lambda student: student[1]) # বয়স অনুযায়ী সাজানো
print(students)
# আউটপুট: [('Bob', 20), ('Charlie', 23), ('Alice', 25)]
৩. map(), filter(), এবং reduce() এর সাথে ব্যবহার
map(): প্রতিটি আইটেমে একটি ফাংশন প্রয়োগ করে।
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) # আউটপুট: [1, 4, 9, 16]
filter(): একটি কন্ডিশন অনুযায়ী ফিল্টার করে।
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # আউটপুট: [2, 4, 6]
reduce(): functools লাইব্রেরির reduce() ফাংশন ব্যবহার করে সবগুলো আইটেমের উপর কন্ডিশন প্রয়োগ করে একটি রেজাল্ট প্রদান করে।
from functools import reduce
numbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers)
print(product) # আউটপুট: 24
ল্যাম্বডা ফাংশনের সুবিধা ও অসুবিধা
সুবিধা:
- কোড সংক্ষিপ্ত করা যায়।
- একবারের জন্য ছোট ফাংশন তৈরি করতে সহায়ক।
map,filter, এবংreduceএর মতো ফাংশনের সাথে খুবই কার্যকর।
অসুবিধা:
- জটিল লজিকের জন্য ল্যাম্বডা ব্যবহার কঠিন।
- ডিবাগিং কঠিন, কারণ এর কোনো নাম নেই।
- সাধারণ ফাংশনের তুলনায় কোডের পাঠযোগ্যতা কম হতে পারে।
সারসংক্ষেপ
ল্যাম্বডা ফাংশন ছোট এবং এক লাইনের ফাংশন তৈরি করতে ব্যবহৃত হয়। এটি অস্থায়ী কাজের জন্য আদর্শ, তবে জটিল ফাংশনের জন্য সাধারণ ফাংশন ব্যবহারই উত্তম।
Read more