perm_phone_msgUNDER ATTACK? S.O.S. LINE 01781669080

Top Categories

Spotlight

Aditta Chakraborty

today13 September, 2021

Sanaton + Lord Shiva Aditta

কৈলাস পর্বতে পরমাত্মা সদাশিবের পরিচয়

আমরা কম বেশি সবাই জানি কৈলাস পর্বত হচ্ছে শিবের বাসস্থান। আসলেই কি কৈলাস পর্বত শিবের বাসস্থান? পরমেশ্বর সদাশিব যখন ব্রহ্মাকে সৃষ্টির কাজ করতে আদেশ দেন তখন ব্রহ্মা প্রথমেই কয়েকজন মানসপুত্রের সৃষ্টি করলেন। কিন্তু তারা সকলেই সংসার-বৈরাগী হলেন। এতে ব্রহ্মা ক্ষেপে যান। ব্রহ্মা ক্রোধে রোদন করতে থাকেন। তার ফলে সৃষ্টি হয় [...]


Lambda (Anonymous) ফাংশন | পাইথন

Python Aditta today26 August, 2021 32

Background
share close

ইউজার ডিফাইন্ড ফাংশন আমরা দেখলাম। সেখানে def কীওয়ার্ড ব্যবহার করতে হয় এবং ফাংশনের নাম ডিক্লেয়ার করতে হয়। কিন্তু lambda ফাংশন একটি ফাংশন, যে ফাংশনের নাম থাকবে না এবং def কীওয়ার্ডও ব্যবহার করতে হবে না। শুধু এটি স্টোর করা থাকবে একটি ভেরিয়েবলে। আর অবশ্যই ফাংশনটি মাত্র এক লাইনের ফাংশন। যেহেতু lambda ফাংশনের নাম থাকে না, তাই একে Anonymous ফাংশন বলা হয়।

lambda ফাংশনের ‍সিনটেক্সঃ

lambda arguments: expression

এই ফাংশনে যেকোনো সংখ্যার আর্গুমেন্টস থাকতে পারে কিন্তু এক্সপ্রেশন থাকবে মাত্র একটি।


এবারে আমরা সাধারণ কয়েকটি ফাংশন দেখবো এবং সেগুলোকে lambda ফাংশনে রূপান্তর করবো। প্রথমেই একটি সংখ্যার স্কয়ার বের করার ফাংশন লিখি। 

def square(x):
    return x ** 2


print(square(5))

প্রোগ্রামটি রান করালে নিচের মত আউটপুট পাওয়া যাবেঃ 

25

এবার এই ফাংশনটিকেই আমরা lambda ফাংশনে রূপান্তর করবো। 

square = lambda a: a ** 2

print(square(7))

প্রোগ্রামটি রান করালে নিচের মত আউটপুট পাওয়া যাবেঃ 

49

মূল ফাংশন একলাইন এবং কল করে প্রিন্ট করার জন্য একলাইন, মোট দুই লাইন লেগেছে। অবাক হলেন তাই না? এবারে বিস্তারিত বলছি।

আমরা square নামের একটি ভেরিয়েবল ডিক্লেয়ার করলাম যেখানে lambda ফাংশনটি স্টোর করা থাকবে। এবার ফাংশনের শুরুতেই lambda কীওয়ার্ডটি ডিক্লেয়ার করলাম এবং এর সামনে a নামের একটি ভেরিয়েবল লিখলাম। যেহেতু আমরা একটি মাত্র ডেটাকে প্যারামিটারে দিচ্ছি তাই রিসিভ করার জন্য একটি আর্গুমেন্ট লিখলাম। মোটকথা প্যারামিটার এবং আর্গুমেন্ট সমান সংখ্যক হতে হবে। এবারে a ভেরিয়েবলের সামনে : (কোলন ) চিহ্ন দিয়ে পুরা এক্সপ্রেশনটা লিখে দিতে হবে। যেহেতু a ভেরিয়েবলে ডেটা রয়েছে তাই a ভেরিয়েবলকে আমরা বর্গ করে দিলাম। অর্থাৎ a ** 2 । আমাদের lambda ফাংশন তৈরি করা শেষ হয়েছে। এবারে প্রিন্ট করে আউটপুট দেখার পালা। পুরা ফাংশনটা square ভেরিয়েবলে স্টোর করা আছে। তাই আমরা square ভেরিয়েবলকে প্রিন্ট করবো। কিন্তু square ভেরিয়েবলকে সরাসরি প্রিন্ট করলে প্রোগ্রাম Error দিবে। কারণ আমরা Parenthesis-এ কোনো ডেটা দেইনি। তাই square ভেরিয়েবলের সামনে প্রথম বন্ধনীর ভিতর ডেটাকে লিখে দিতে হবে। তাহলেই আমরা আউটপুট পাবো। আমাদের প্রধান লাইনটি square(7) এইরকম। এবারে এটিকে print() ফাংশন এর ভিতর দিয়ে দিন।

উপরের ফাংশনটি ছিল একটি মাত্র আর্গুমেন্ট এর জন্য। আমরা এবার দুটি আর্গুমেন্ট নিয়ে কাজ করবো। দুটি সংখ্যাকে আমরা যোগ করতে চাইলে সাধারণ ফাংশনটি হবে নিচের মত- 

def add(number1, number2):
    return number1 + number2


print(add(50, 60))

প্রোগ্রামটি রান করালে নিচের মত আউটপুট পাওয়া যাবেঃ 

110

এবার এই ফাংশনটিকেই আমরা lambda ফাংশনে রূপান্তর করবো। 

add = lambda number1, number2: number1 + number2

print(add(50, 60))

প্রোগ্রামটি রান করালে নিচের মত আউটপুট পাওয়া যাবেঃ 

110

দুটি সংখ্যাকে যোগ করার জন্য দুটি আর্গুমেন্ট লাগবে। আর আমরা lambda কীওয়ার্ড এর পরে এই দুটি আর্গুমেন্টকে , (কমা) দিয়ে লিখেছি। এভাবে আপনার যতগুলো আর্গুমেন্ট দরকার সবগুলোকে , দিয়ে লিখবেন।

আপনি lambda ফাংশনে conditional logic ও ব্যবহার করতে পারেন। যেমন কোনো একটি সংখ্যা জোড় কিনা তা নিচের ফাংশন দিয়ে জানা যায়। 

is_even = lambda number: number % 2 == 0

print(is_even(5))
print(is_even(8))

প্রোগ্রামটি রান করালে নিচের মত আউটপুট পাওয়া যাবেঃ 

False
True

এবারে বলি এই lambda ফাংশন কখন এবং কোথায় ব্যবহার করবো। যেসব সাধারণ ফাংশন দেখবেন উপরের মত সহজ এবং সামান্য ২/৩ লাইনেই হয়ে যাচ্ছে, সেসব ফাংশনগুলোই lambda তে লিখবেন। কিন্তু জটিল ফাংশনগুলো lambda তে লিখার দরকার নাই। আর এই lambda ফাংশনকে আমরা filter(), map() এইসব বিল্ট-ইন ফাংশনেও ব্যবহার করতে পারি। অর্থাৎ ফাংশনের ভিতর ফাংশন। যখন filter() এবং map() ফাংশন শিখবো তখন lambda এর ব্যবহার সেখানে দেখে নিবো।

Written by: Aditta

Tagged as: , , , , , , , , , , .

Rate it
Previous post
Cobra - Hack To Protect Your System

today21 May, 2021

  • 478
  • 1
close

Python Aditta

global কীওয়ার্ড | পাইথন

Global ভেরিয়েবলকে ফাংশনের ভিতর থেকে এক্সেস করা যায় তা আমরা দেখেছি। কিন্তু Global ভেরিয়েবলের মানকে কাস্টমাইজ করা যায় না। x = 10 # global variable def my_function(): x += 5 ...


Similar posts