ফাংশন (Function)
একটি ফাংশন হলো কোডের একটি ব্লক যা একটি নির্দিষ্ট কাজ সম্পন্ন করে, এর নিজস্ব স্কোপ থাকে এবং নাম দিয়ে কল করা হয়। সব ফাংশনে শূন্য (না) আর্গুমেন্ট বা একাধিক আর্গুমেন্ট থাকতে পারে। এক্সিট করার সময়, একটি ফাংশন এক বা একাধিক মান রিটার্ন করতে পারে বা নাও করতে পারে।
বেসিক ফাংশন সিনট্যাক্স
def functionName(arg1, arg2, ...):
.......
# Function_body
......
আমাদের নিজস্ব (ইউজার), একটি খুব সিম্পল ফাংশন তৈরি করি যাকে "sum" বলা হয় (ইউজার যেকোনো নাম দিতে পারে)। "sum" ফাংশনের দুটি আর্গুমেন্ট আছে num1 এবং num2 এবং ফাংশনে পাস করা আর্গুমেন্টগুলোর যোগফল রিটার্ন করবে। যখন আমরা ফাংশন (sum) কল করি ৫ এবং ৬ মান (আর্গুমেন্ট) দিয়ে, এটি ১১ রিটার্ন করে।
def sum(num1, num2):
return (num1 + num2)
আউটপুট
>>> sum(5,6) 11
উপরে থেকে আমরা দেখতে পাচ্ছি 'return' স্টেটমেন্ট পাইথন ফাংশন থেকে একটি মান রিটার্ন করে।
ফাংশন আমাদের কোড রিযুজেবিলিটি বাস্তবায়ন করতে দেয়। তিন ধরনের ফাংশন আছে -
বিল্ট-ইন ফাংশন (নাম অনুযায়ী, এই ফাংশনগুলো পাইথন ল্যাঙ্গুয়েজের সাথে আসে, উদাহরণস্বরূপ help() হেল্প চাইতে, max()- সর্বোচ্চ মান পেতে, type()- একটি অবজেক্টের টাইপ রিটার্ন করতে এবং অন্যান্য অনেক।)
ইউজার-ডিফাইনড ফাংশন (এই ফাংশনগুলো ইউজার তৈরি করে তাদের সাহায্যের জন্য, উপরের "sum" ফাংশন যা আমরা তৈরি করেছি)।
অনামিক ফাংশন (এক্স এ ল্যাম্বডা ফাংশন এবং নরমাল ফাংশন যা def কিওয়ার্ড দিয়ে ডিফাইন করা হয় তার বিপরীতে lambda কিওয়ার্ড দিয়ে ডিফাইন করা হয়)।
মেথড (Method)
পাইথনে একটি মেথড কিছুটা ফাংশনের মতো, বাদে এটি অবজেক্ট/ক্লাসের সাথে যুক্ত থাকে। পাইথনে মেথডগুলো ফাংশনের খুব মিল, বাদে দুটি বড় পার্থক্যের জন্য।
মেথড 암প্লিসিটলি সেই অবজেক্টের জন্য ব্যবহৃত হয় যার জন্য এটি কল করা হয়।
মেথড ক্লাসের ভেতরে থাকা ডেটা অ্যাক্সেসযোগ্য।
জেনারেল মেথড সিনট্যাক্স
class ClassName:
def method_name():
.........
# Method_body
...............
একটি সিম্পল কোড দিয়ে মেথড বুঝি:
class Pet(object):
def my_method(self):
print("I am a Cat")
cat = Pet()
cat.my_method()
আউটপুট
I am a Cat
উপরের কোডে, আমরা প্রথমে "Pet" ক্লাস ডিফাইন করেছি। তারপর এই ব্লুপ্রিন্ট থেকে "cat" অবজেক্ট তৈরি করেছি। এরপর, আমরা আমাদের কাস্টম মেথড "my_method" কল করেছি অবজেক্টের সাথে (অর্থাৎ cat)।
পাইথনে মেথড এবং ফাংশনের মূল পার্থক্য
যেহেতু আমরা ফাংশন এবং মেথড দুটির বেসিক বোঝাপড়া পেয়েছি, চলে যাক মূল পার্থক্যগুলো হাইলাইট করা:
ফাংশনের বিপরীতে, মেথডগুলো একটি অবজেক্টের ওপর কল করা হয়। আমাদের উপরের উদাহরণে আমরা আমাদের মেথড "my_method" অবজেক্ট "cat" এর ওপর কল করেছি যেখানে ফাংশন "sum" কোনো অবজেক্ট ছাড়াই কল করা হয়েছে। এছাড়া, কারণ মেথড একটি অবজেক্টের ওপর কল করা হয়, এটি সেটির ভেতরের ডেটা অ্যাক্সেস করতে পারে।
মেথড যা অবজেক্টের স্টেট পরিবর্তন করতে পারে, তার বিপরীতে পাইথন ফাংশন সাধারণত এটা করে না এবং সেটির ওপর অপারেশন করে।
সংক্ষেপে, একটি মেথড হলো একটি ফাংশন যা একটি অবজেক্টের অন্তর্গত।