পাইথনে ফাংশন একটি কলেবল অবজেক্ট। অন্য অবজেক্টও __call__ মেথড ইমপ্লিমেন্ট করে ফাংশনের মত আচরণ করতে পারে।
ফাংশন vs মেথড
def a(): pass print(a) #print(type(a)) # class C: def c(self): pass print(C.c) # (unbound method in Py2, function in Py3) print(C().c) # >
পাইথন ৩-এ পার্থক্য কম
- পাইথন ৩-এ আনবাউন্ড মেথড এক্সিস্ট করে না — ক্লাস অ্যাট্রিবিউট আকারে ফাংশনই থাকে।
- বাউন্ড মেথড: ইনস্ট্যান্সের সাথে বাঁধা ফাংশন,
selfঅটোমেটিক্যালি পাস হয়। - ফাংশন, বাউন্ড মেথড, কলেবল অবজেক্ট (
__call__), ক্লাস কনস্ট্রাক্টর — সবাই একইভাবে কল করা যায়()দিয়ে।
ফার্স্ট-ক্লাস ফাংশন
পাইথনে ফাংশন ফার্স্ট-ক্লাস সিটিজেন:
- ভেরিয়েবলে অ্যাসাইন করা যায়
- আর্গামেন্ট হিসেবে পাস করা যায়
- রিটার্ন করা যায়
- ডেটা স্ট্রাকচারেই স্টোর করা যায়
উদাহরণ: বাউন্ড মেথড ফাংশন হিসেবে ব্যবহার
class A:
def a(self): print("Hello")
d = A().a # বাউন্ড মেথড
d() # Hello — ফাংশন এর মত কল হয়েছে
নिष्कর্ষ
পাইথনে ফাংশন এবং মেথড মৌলিকভাবে একই জিনিস — কলেবল অবজেক্ট। পার্থক্য শুধু নেমিং কনভেনশন এবং বাইন্ডিং-এ। এই ইউনিফর্মিটি পাইথনকে শক্তিশালী ও ফ্লেক্সিবল করে তোলে।