PYTHON BASIC PART-8: পাইথনে ফাঙ্কশন কি?

পাইথনে ফাঙ্কশন কি? What is function in Python?

Python এ function হচ্ছে Program এর এমন একটা code block যা একটা নির্দিষ্ট কার্য সম্পাদনের এবং তা বার বার ব্যবহারের জন্যে ব্যবহৃত হয়। অর্থাৎ function এর মধ্যে এমন কিছু Instruction বা নির্দেশাবলী থাকে যা function ব্যবহারকারী থেকে এক বা একাধিক input নিয়ে এক বা একাধিক output বা result রিটার্ন করার জন্য ব্যবহৃত হয়। তবে অনেক সময় ইনপুট ছাড়াও আমরা আউটপুট রিটার্ন করতে পারি।

ফাঙ্কশনের মাধ্যমে প্রোগ্রামের যে অংশগুলো বার বার আসে সেগুলোকে আমরা পুনরায় ব্যবহারযোগ্য করতে পারি ।

পাইথনে ফাংশনকে অনেকটা আমরা একটা ছোট্ট মেশিনের সাথে তুলনা করতে পারি, অর্থাৎ একবার মেশিনটি তৈরি করবো আর বার বার ব্যবহার করে কিছু একটা কাজ করব বা জিনিষ তৈরি করবো। কিছু তৈরি করতে হলে মেশিনে কিছু ইনপুট দিতে হতে পারে। আবার কিভাবে তৈরি করবে সেটাও মেশিনের মধ্যে যন্ত্রপাতি বসিয়ে সেটআপ করতে হবে। এভাবে বাস্তবে একটা মেশিন তৈরি করাকেই প্রোগ্রামের মধ্যে ফাংশন ডিফাইন করা বলা যেতে পারে।

পাইথনে সাধারণত, program page লোড হওয়ার সাথে সাথেই ডিক্লেয়ার করা function execute হয়না, যতক্ষণ না function কে call করা না হয়।

পাইথনে function কত প্রকার ?

দুই প্রকার :

  • Python Pre-built function বা Python language কর্তৃক পূর্ব নির্ধারিত বিভিন্ন library function বা library ছাড়া function
  • User/Programmer defined function বা Programmer কর্তৃক নির্ধারিত function

পাইথনে function কিভাবে লিখতে হয়?

  • পাইথনে ফাংশন ডিক্লেয়ার করার জন্য def কি-ওয়ার্ডটি দিয়ে শুরু করতে হবে।
  • def কি-ওয়ার্ডটির পর ফাঙ্কশনের নামটি letter অথবা underscore দিয়ে শুরু করতে হয়।
  • ফাঙ্কশনের নামের শেষে একজোড়া প্রথম বন্ধনী () এরপর একটি colon (:) দিতে হবে।
  • ফাংশনকে কল করার বা ব্যবহার করার আগেই সেই ফাংশনকে প্রোগ্রামে ডিফাইন করতে হবে।
  • “””docstring””” অর্থাৎ function এর মধ্যে function এর documentation লেখার জন্য ব্যবহৃত হয়।
  • পাইথনে function Case sensitive অর্থাৎ একই নামে কোনো ফাঙ্কশন lowercase এবং uppercase এর কারণে আলাদা function হিসেবে বিবেচিত হবে।

পাইথনে function লেখার Syntax কি ?

def function_name(parameters):
	"""docstring"""
	statement(s)

চলুন syntax অনুসারে একটা function তৈরী করে ফেলি :

def greet(name):
	"""This function greets to
	the person passed in as
	parameter"""
	print("Hello, " + name + ". Good morning!");

def Greet(name):
	"""This function Greets to
	the person passed in as
	parameter"""
	print("Hello, " + name + ". Good morning!");
	
Greet("Masud");
greet("Sohel");

Output

Hello, Masud. Good morning!
Hello, Sohel. Good morning!

পাইথনে function এর মধ্যে Parameter কি এবং argument কি ?

function declaration অথবা define এর সময় parentheses এর মধ্যে ব্যবহৃত একেকটি variable কে একেকটি function parameter বলা হয়। একই ভাবে function calling এর সময় parentheses এর মধ্যে ব্যবহৃত একেকটি variable কে একেকটি function argument বলা হয়।function parameter এবং arguments কিভাবে কাজ করে তা বাজার জন্য নিচের ছবিটি লক্ষ্য করুন :

function Parameter and arguments

function Parameter and arguments

চলুন function parameter এবং arguments দিয়ে একটা function define এবং call করি।

def getSum(num1, num2):
  sum = num1 + num2;
  print("Sum of the two numbers ",num1," and ",num2,"  is : ", sum);

  

getSum(10, 20);

Output

Sum of the two numbers  10  and  20   is :  30

পাইথনে functions এর arguments গুলোকে কয় ভাবে receive বা গ্রহণ করা যায়?

পাইথনে দুই ভাবে argument গুলোকে receive বা গ্রহণ করা যায় :

  • সরাসরি function এর ভিন্ন ভিন্ন Parameter দিয়ে ভিন্ন ভিন্ন argument গুলো রিসিভ করা যায়।
  • function এর একটা নির্দিষ্ট Parameter দিয়ে সবগুলো argument গুলো রিসিভ করা যায়।

এবার চলুন একটা উদাহরণের মাধ্যমে দেখা যাক কিভাবে সরাসরি function এর ভিন্ন ভিন্ন Parameter দিয়ে ভিন্ন ভিন্ন argument গুলো রিসিভ করা যায়:

def getSum(num1, num2):
  sum = num1 + num2;
  print("Sum of the two numbers ",num1," and ",num2,"  is : ", sum);

  

getSum(10, 20);

Output

Sum of the two numbers  10  and  20   is :  30

লক্ষ্য করুন উপরের উদাহরণে আমরা num1 এবং num2 parameter এর জন্য দুটি আলাদা Argument যথাক্রমে 10 এবং 20 পাঠিয়েছি, যদি কম অথবা বেশি পাঠাই তাহলে নিচের মতো error প্রদর্শন করবে:

def getSum(num1, num2):
  sum = num1 + num2;
  print("Sum of the two numbers ",num1," and ",num2,"  is : ", sum);

  

getSum(10, 20,30);

Output

python argument missing error

python argument missing error

আবার যদি কম পাঠান, তাহলে নিচের মতো error আসবে:

python argument missing error 2

python argument missing error 2

তবে আপনি চাইলে নিচের মতো করে একটা ডিফল্ট ভ্যালু সেট করে দিতে পারেন :

def getSum(num1, num2=20):
  sum = num1 + num2;
  print("Sum of the two numbers ",num1," and ",num2,"  is : ", sum);
 
  
getSum(10);

তবে আপনি চাইলে প্যারামিটার এর নাম ধরেও argument pass করতে পারেন। চলুন একটা উদাহরণে বুঝে নেয়া যাক:

def getSum(num1, num2):
  sum = num1 + num2;
  print("Sum of the two numbers ",num1," and ",num2,"  is : ", sum);
 
   
 
getSum(num2=30, num1=20);

Output

Sum of the two numbers  20  and  30   is :  50

তবে এক্ষেত্রে সমস্যা হচ্ছে সবগুলো প্যারামিটার এর নাম ধরেই পাঠাতে হয়, আবার সুবিধা হয় আপনি চাইলে প্যারামিটার swaping করতে পারবেন। লক্ষ্য করুন আমরা দ্বিতীয় প্যারামিটার এর ভ্যালু প্রথমে পাঠিয়েছি।

পাইথনে function এর একটা নির্দিষ্ট Parameter দিয়ে সবগুলো argument গুলো রিসিভ করার নিয়ম :

পাইথনে function এর একটা নির্দিষ্ট Parameter দিয়ে সবগুলো argument গুলো রিসিভ করতে হলে আপনাকে ফাঙ্কশনের parameter এর সামনে একটা “*” star দিতে হবে। চলুন একটা উদাহরণে বুঝে নেয়া যাক:

def greet(*names):
   """This function greets all
   the person in the names tuple."""

   # names is a tuple with arguments
   for name in names:
       print("Hello",name)

greet("Monir","Minhaz","Iqbal","Sharif")

Output

Hello Monir
Hello Minhaz
Hello Iqbal
Hello Sharif

পাইথনে Variable Scope কি?

পাইথনে আপনি আপনার সমস্ত কোড জুড়ে যেকোনো জায়গায় Variable Declare বা ঘোষণা করতে পারেন। কোনো Variable যদি আপনি function এর ভিতরে ঘোষণা করেন, তাহলে ঐ Variable এর ব্যবহার Function এর মধ্যেই সীমাবদ্ধ রাখতে হবে। পাইথনে এইটাকে বলা হয় Local Scope, আবার যদি কোনো Variable ফাঙ্কশনের বাহিরে ঘোষণা করেন। তাহলে ঐ Variable সমস্ত কোড জুড়ে ব্যবহার করতে পারবেন এমনকি Funciton এর ভিতরেও ব্যবহার করতে পারবেন।

পাইথনে Variable Scope দুই ধরনের :

  • local
  • global

প্রথমে চলুন পাইথনে variable এর global scope এর উদহারণ দেখা যাক:

x = 10
def myFunc():
	print("Value inside function:",x)

myFunc()

Output


Value inside function: 10

লক্ষ্য করুন: আমাদের variable ফাঙ্কশনের বাহিরে ডিক্লেয়ার করা তারপর ও এটা ফাঙ্কশনের ভিতরে ব্যবহার করা গেছে , এবং ফলাফল ও আসছে।

এবার চলুন পাইথনে variable এর local scope এর উদহারণ দেখা যাক:

def myFunc():
	x = 10
	print("Value inside function:",x)

myFunc()
print("Value outside function:",x)

Output

python variable localscope

python variable localscope

তবে আপনি চাইলে variable কে ফাঙ্কশনের মধ্যে global ডিক্লেয়ার করে , ফাঙ্কশনের বাহিরে variable কে ব্যবহার করতে পারেন। চলুন উদাহরণ দিয়ে বুঝে নেয়া যাক:

def myFunc():
	global x
	x=20
	print("Value inside function:",x)

myFunc()
print("Value outside function:",x)

output

Value inside function: 20
Value outside function: 20

পাইথনে Anonymous এবং lambda function কি?

Anonymous শব্দের অর্থ হচ্ছে নাম বিহীন বা বেনামী, আর anonymous function মানে হচ্ছে নাম বিহীন function বা বেনামী function, সুতরাং পাইথনে যখন কোনো function declare বা ঘোষণা করা হয়, কিন্তু function টির কোনো নাম থাকেনা, পাইথনে সেই function কে anonymous function বলে। আর এই anonymous ফাঙ্কশনকেই আবার lambda function বলে।

সাধারণতঃ পাইথনে function declare করা হয় def কীওয়ার্ড ব্যবহার করে, কিন্তু পাইথনে anonymous ফাংশনগুলি lambda কীওয়ার্ড ব্যবহার করে declare করা হয়।

পাইথন মধ্যে Lambda/anonymous ফাঙ্কশনের সিনট্যাক্স কি?

lambda arguments: expression

এবার চলুন একটা উদাহরণ দিয়ে বুঝে নেয়া যাক:

# Program to show the use of lambda functions

double = lambda x: x * 2

# Output: 10
print(double(5))

Output

10

উপরের ফাঙ্কশনটি নাম যুক্ত অবস্থা ঠিক এই রকম ছিল :

def double(x):
   return x * 2
print(double(5))
Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।

Leave a Reply