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

পাইথনে ফার্স্ট-ক্লাস সিটিজেন (First-Class Citizens)


ফার্স্ট-ক্লাস সিটিজেন হলো এমন এন্টিটি যা অন্যান্য ফেলো এন্টিটির সাপোর্টের জন্য সব অপারেশন ইনাবল করে।

এই এন্টিটিগুলো প্রায়ই ব্যবহৃত হয়: আর্গুমেন্ট পাস করার সময়, ফাংশন থেকে ভ্যালু রিটার্ন করার সময়, কন্ডিশনাল মডিফিকেশন এবং ভ্যালু অ্যাসাইনমেন্ট।

এই নিবন্ধে আমরা পাইথন ৩.x-এ ফার্স্ট-ক্লাস সিটিজেনের বাস্তবায়ন এবং ব্যবহার দেখব। এছাড়া কোন কোন এন্টিটি ফার্স্ট-ক্লাস সিটিজেনের ট্যাগ পায় তা শিখব।

এই সিটিজেনগুলিতে ভেরিয়েবলসহ ফাংশন রয়েছে।

চলুন প্রথমে ফার্স্ট-ক্লাস সিটিজেনের অংশবানো ডেটা টাইপগুলো জানি

  • ইন্টিজার (Integers)
  • ফ্লোটিং টাইপ (Floating type)
  • কমপ্লেক্স নম্বর (Complex Numbers)
  • স্ট্রিংস (Strings)

উপরে উল্লেখ করা চারটি টাইপ সব পাইথন ৩.x-এ ফার্স্ট-ক্লাস সিটিজেনের ট্যাগ পায়।

উদাহরণ

# ইন্টিজার ডিক্লেরেশন
print("hello world")
int_inp = int(input())
print("This is a First class Citizen of " + str(type(int_inp)))

# ফ্লোটিং টাইপ ডিক্লেরেশন
float_inp = float(input())
print("This is a First class Citizen of " + str(type(float_inp)))

# কমপ্লেক্স নম্বর ডিক্লেরেশন
complex_inp = complex(input())
print("This is a First class Citizen of " + str(type(complex_inp)))

# স্ট্রিং ডিক্লেরেশন
str_inp = input()
print("This is a First class Citizen of " + str(type(str_inp)))

ইনপুট

2
23.4
4+7j
tutorialspoint

আউটপুট

This is a First class Citizen of 
This is a First class Citizen of 
This is a First class Citizen of 
This is a First class Citizen of 

এখন কিছু ফাংশন দেখা যাক যেগুলো ফার্স্ট-ক্লাস সিটিজেন হিসেবে রেফার করা হয়।

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

এখন দেখি পাইথন ফার্স্ট-ক্লাস ফাংশন সাপোর্ট করে কিনা। যেকোনো ল্যাঙ্গুয়েজকে ফার্স্ট-ক্লাস ফাংশন সাপোর্ট করা বলা হয় যখন সেটি ফাংশনকে ফার্স্ট-ক্লাস অবজেক্ট হিসেবে ট्रीট করে।

উদাহরণ

# পাইথন প্রোগ্রাম
# ফাংশনকে অবজেক্ট হিসেবে ট্রিট করা
def comp_name(text):
    return text.isupper()

print(comp_name("TUTORIALSPOINT"))
new_name = comp_name  # একটি ফাংশনকে অবজেক্ট দিয়ে রেফারেন্স
print(new_name("TutorialsPoint"))

আউটপুট

True
False

উদাহরণ

# পাইথন প্রোগ্রাম
# ফাংশনকে অন্য ফাংশনের আর্গুমেন্ট হিসেবে পাস করা
def new_inp(text):
    return text.upper()

def old_inp(text):
    return text.lower()

def display(func):
    # ফাংশনকে একটি নরমাল ভেরিয়েবলে স্টোর
    code = func("Love Coding, Learn everything on Tutorials Point")
    print(code)

display(new_inp)  # সরাসরি ফাংশন আর্গুমেন্ট হিসেবে পাস করে রেফারেন্স
display(old_inp)

আউটপুট

LOVE CODING, LEARN EVERYTHING ON TUTORIALS POINT
love coding, learn everything on tutorials point

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

উপসংহার

এই নিবন্ধে আমরা পাইথনে ফার্স্ট-ক্লাস সিটিজেন: ভেরিয়েবল এবং ফাংশন উভয়ের বাস্তবায়ন শিখেছি।

  1. পাইথনে ইনহেরিটেন্স (Inheritance)

  2. পাইথন ক্লাস ব্রাউজার সাপোর্ট (pyclbr মডিউল)

  3. পাইথনে ক্লাস মেথড বনাম স্ট্যাটিক মেথড

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