কম্পিউটার টিউটোরিয়াল

পাইথন ফাংশন ও অবজেক্ট মেথড: কীটা বেশি ফান্ডামেন্টাল?

পাইথনে ফাংশন একটি কলেবল অবজেক্ট। অন্য অবজেক্টও __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 — ফাংশন এর মত কল হয়েছে

নिष्कর্ষ

পাইথনে ফাংশন এবং মেথড মৌলিকভাবে একই জিনিস — কলেবল অবজেক্ট। পার্থক্য শুধু নেমিং কনভেনশন এবং বাইন্ডিং-এ। এই ইউনিফর্মিটি পাইথনকে শক্তিশালী ও ফ্লেক্সিবল করে তোলে।

  1. পাইথন ল্যাম্বডা ফাংশন: একটি পরিচিতি

  2. জাভাস্ক্রিপ্টে ফাংশন ও মেথডের পার্থক্য

  3. পাইথন ফাংশন কি অবজেক্ট?

  4. পাইথন ফাংশন থেকে ফাংশন রিটার্ন করা