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

পাইথনে ফার্স্ট-ক্লাস ফাংশন (First Class Functions)

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

ফার্স্ট-ক্লাস ফাংশন들의 প্রোপার্টি কী কী?

  • এটি একটি অবজেক্ট টাইপের ইনস্ট্যান্স
  • ফাংশন ভেরিয়েবল হিসেবে সংরক্ষিত হতে পারে
  • ফার্স্ট-ক্লাস ফাংশন অন্য ফাংশনের আর্গুমেন্ট হিসেবে পাস করা যায়
  • অন্য ফাংশন থেকে ফাংশন রিটার্ন করা যায়
  • ফাংশন লিস্ট, সেট বা অন্যান্য ডেটা স্ট্রাকচারে সংরক্ষিত হতে পারে

প্রথমে দেখব পাইথনে ফাংশন কীভাবে একটি অবজেক্ট হিসেবে ব্যবহার করা যায়। পাইথনে, একটি ফাংশন ভেরিয়েবল হিসেবে অ্যাসাইন করা যায়। ভেরিয়েবল হিসেবে অ্যাসাইন করতে হলে, ফাংশনটি কল করা হবে না। তাই पैরেনথেসিস '()' থাকবে না।

উদাহরণ কোড

def cube(x):
    return x*x*x
res = cube(5)
print(res)
my_cube = cube  # my_cube cube মেথডের মতোই
res = my_cube(5)
print(res)

আউটপুট

125
125

এখন দেখব ফাংশন কীভাবে অন্য ফাংশনের আর্গুমেন্ট হিসেবে পাস করা যায়। এখানে উদাহরণ:

উদাহরণ কোড

def cube(x):
    return x*x*x

def my_map(method, argument_list):
    result = list()
    for item in argument_list:
        result.append(method(item))
    return result

my_list = my_map(cube, [1, 2, 3, 4, 5, 6, 7, 8])  # ফাংশন আর্গুমেন্ট হিসেবে পাস
print(my_list)

আউটপুট

[1, 8, 27, 64, 125, 216, 343, 512]

এখানে ফার্স্ট-ক্লাস ফাংশনের তৃতীয় প্রোপার্টি। এই কেসে আমরা একটি ফাংশন অন্য ফাংশন থেকে রিটার্ন করব।

উদাহরণ কোড

def create_logger(message):
    def log():
        print('Log Message: ' + message)
    return log  # একটি ফাংশন রিটার্ন করুন

my_logger = create_logger('Hello World')
my_logger()

আউটপুট

Log Message: Hello World
  1. জাভাস্ক্রিপ্টে ফার্স্ট-ক্লাস ফাংশন

  2. পাইথনে issubset() ফাংশন

  3. পাইথনে intersection() ফাংশন

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