পাইথন সুইচ স্টেটমেন্ট

ভূমিকা

আপনার প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করার জন্য সুইচ স্টেটমেন্ট একটি শক্তিশালী এবং সুবিধাজনক টুল। এটি আপনাকে প্রদত্ত ভেরিয়েবল বা এক্সপ্রেশনের মানের উপর নির্ভর করে কোডের একাধিক শাখা দ্রুত এবং সহজে তৈরি করতে দেয়। এটি সাধারণত ব্যবহৃত হয় যখন আপনাকে একটি প্রদত্ত ভেরিয়েবলের মানের উপর নির্ভর করে বিভিন্ন যুক্তি প্রয়োগ করতে হয়, যার মান 2 টিরও বেশি (কিন্তু একটি সীমাবদ্ধ সংখ্যা) থাকতে পারে।

এই নিবন্ধে, আমরা পাইথনে কীভাবে সুইচ স্টেটমেন্ট ব্যবহার করব এবং অন্যান্য নিয়ন্ত্রণ কাঠামোর তুলনায় এর সুবিধাগুলি নিয়ে আলোচনা করব। আপনি পাইথনে নতুন বা একজন অভিজ্ঞ ডেভেলপার হোন না কেন, সুইচ স্টেটমেন্ট আপনাকে ক্লিনার, আরও দক্ষ কোড লিখতে সাহায্য করতে পারে।

v3.10 এর আগে

পাইথন সুইচ স্টেটমেন্টটি ভাষাতে স্থানীয়ভাবে উপলব্ধ হওয়ার আগে, প্রোগ্রামারদের একই কার্যকারিতা অর্জনের জন্য অন্যান্য নিয়ন্ত্রণ কাঠামো ব্যবহার করতে হয়েছিল। একটি সাধারণ পদ্ধতি ছিল if-else স্টেটমেন্টের একটি সিরিজ ব্যবহার করা, কোডের প্রতিটি শাখাকে পরীক্ষিত ভেরিয়েবলের ভিন্ন মানের সাথে যুক্ত করা হয়েছে।

উদাহরণস্বরূপ, নিম্নলিখিত কোড বিবেচনা করুন:

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

এই কোডে, আমরা ভেরিয়েবলের মানের উপর ভিত্তি করে কোডের কোন শাখাটি কার্যকর করতে হবে তা নির্ধারণ করতে একটি if-else স্টেটমেন্ট ব্যবহার করছি value। যদি value "foo" এর সমান, কোডের প্রথম শাখাটি কার্যকর করা হবে। যদি value "বার" এর সমান, কোডের দ্বিতীয় শাখাটি কার্যকর করা হবে। অন্যথায়, কোড else ব্লক কার্যকর করা হবে।

এই পদ্ধতিটি কাজ করার সময়, পরিবর্তনশীলের সম্ভাব্য মানের সংখ্যা বৃদ্ধির সাথে সাথে এটি দ্রুত অবাস্তব হয়ে উঠতে পারে। উপরন্তু, এটি কোড পড়া এবং বোঝা কঠিন করতে পারে।

পাইথনে একটি সুইচ-এর মতো বিবৃতি তৈরি করতে ব্যবহার করা যেতে পারে এমন আরেকটি পদ্ধতি হল একটি অভিধান ব্যবহার করা। এই পদ্ধতিতে, অভিধানের কীগুলি পরীক্ষা করা ভেরিয়েবলের সম্ভাব্য মান এবং মানগুলি কোডের সংশ্লিষ্ট শাখা।

উদাহরণস্বরূপ, নিম্নলিখিত কোড বিবেচনা করুন:

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

এই কোডে, আমরা একটি অভিধান সংজ্ঞায়িত করেছি switch, ভেরিয়েবলের সম্ভাব্য মানের প্রতিনিধিত্বকারী কী সহ value. প্রতিটি কী-এর জন্য, আমরা মান হিসেবে একটি ল্যাম্বডা ফাংশন বরাদ্দ করেছি, যেটিতে কোডের সংশ্লিষ্ট শাখা রয়েছে। কোডের উপযুক্ত শাখা চালানোর জন্য, আমরা ব্যবহার করি get() অভিধানের পদ্ধতি, যা অভিধানে প্রদত্ত কীটি বিদ্যমান না থাকলে ব্যবহার করার জন্য একটি ডিফল্ট মান নির্দিষ্ট করতে দেয়।

যদিও এই পদ্ধতিটি if-else স্টেটমেন্ট ব্যবহার করার চেয়ে আরও নমনীয় এবং কম্প্যাক্ট, তবুও এটি পড়া এবং বোঝা কঠিন হতে পারে, বিশেষ করে যদি প্রতিটি শাখার কোড জটিল হয়। উপরন্তু, এর জন্য ল্যাম্বডা ফাংশন ব্যবহার করা প্রয়োজন, যা কিছু প্রোগ্রামারদের জন্য বিভ্রান্তিকর হতে পারে। আমরা এই পদ্ধতিটি ব্যবহার করার পরামর্শ দিই না যদি না কোনো কারণে আপনি এই নিবন্ধে অন্যান্য পদ্ধতিগুলি ব্যবহার করতে না পারেন৷

Python v3.10-এ Python সুইচ স্টেটমেন্টের প্রবর্তনের সাথে, প্রোগ্রামারদের কাছে এখন একটি প্রদত্ত ভেরিয়েবল বা এক্সপ্রেশনের মানের উপর ভিত্তি করে তাদের প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করার আরও সুবিধাজনক এবং স্বজ্ঞাত উপায় রয়েছে। পরবর্তী বিভাগে, আমরা পাইথনে একটি প্রকৃত সুইচ স্টেটমেন্ট কীভাবে ব্যবহার করতে হয় তা অন্বেষণ করব।

সার্জারির match/case বিবৃতি (v3.10 এর পরে)

Python v3.10 এর পরে, সুইচ স্টেটমেন্ট ব্যবহার করে পরিচালনা করা হয় match কীওয়ার্ড এই কীওয়ার্ডটি একটি প্যাটার্ন-ম্যাচিং এক্সপ্রেশন তৈরি করতে ব্যবহার করা হয়, যা আপনাকে একটি প্রদত্ত ভেরিয়েবলের মান বা প্যাটার্নের সিরিজের বিরুদ্ধে এক্সপ্রেশন পরীক্ষা করতে দেয়। যদি একটি মিল পাওয়া যায়, কোডের সংশ্লিষ্ট শাখাটি কার্যকর করা হয়।

উদাহরণস্বরূপ, নিম্নলিখিত কোড বিবেচনা করুন:

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!

এই কোডে, আমরা ব্যবহার করছি match একটি প্যাটার্ন-ম্যাচিং এক্সপ্রেশন তৈরি করতে কীওয়ার্ড, যা ভেরিয়েবলের মান পরীক্ষা করে value নিদর্শন একটি সিরিজ বিরুদ্ধে. যদি value "foo" এর সমান, কোডের প্রথম শাখাটি কার্যকর করা হবে। যদি value "বার" এর সমান, কোডের দ্বিতীয় শাখাটি কার্যকর করা হবে। অন্যথায়, else ব্লকের কোডটি কার্যকর করা হবে।

ব্যর্থ হত্তয়া

পাইথনের সুইচ স্টেটমেন্ট এবং অন্যান্য ভাষায় প্রচলিত সুইচ স্টেটমেন্টের মধ্যে একটি মূল পার্থক্য হল পাইথনের match বিবৃতি পতনের মাধ্যমে সমর্থন করে না. অন্য কথায়, একবার একটি মিল পাওয়া গেলে এবং কোডের সংশ্লিষ্ট শাখাটি কার্যকর করা হয়, match এক্সপ্রেশন শেষ এবং অন্য কোন কোড match বিবৃতি কার্যকর করা হয়। অন্যান্য ভাষায়, এটি সাধারণত ব্যবহার করে অর্জন করা হয় break কীওয়ার্ড, যা এখানে প্রয়োজন বা সমর্থিত নয়।

আপনি যদি একটি ঐতিহ্যগত সুইচ বিবৃতিতে ফল-থ্রু হিসাবে একই আচরণ অর্জন করতে চান, আপনি ব্যবহার করতে পারেন | একাধিক ক্ষেত্রে মেলে অপারেটর. এই অপারেটর আপনাকে একক একাধিক নিদর্শন নির্দিষ্ট করতে দেয় case, এবং নিদর্শন যে কোনো শাখার মৃত্যুদন্ড ট্রিগার মিলিত হতে পারে.

উদাহরণস্বরূপ, নিম্নলিখিত কোড বিবেচনা করুন:

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

এখানে, যদি এর মান value "হ্যাঁ" এর সমান or "y", কোডের প্রথম শাখাটি কার্যকর করা হবে। এটি একটি ঐতিহ্যগত সুইচ বিবৃতিতে পতনের মাধ্যমে আচরণের সমতুল্য।

ডিফল্টে

আপনি সম্ভবত উপরের উদাহরণগুলি থেকে লক্ষ্য করেছেন, "ডিফল্ট" কেস একটি আন্ডারস্কোর ব্যবহার করে পরিচালনা করা হয় (_) এটি "ওয়াইল্ডকার্ড" হিসাবে বিবেচিত হয় এবং সমস্ত মান মেলে। যদি পূর্ববর্তী কেসগুলির একটি মানের সাথে মেলে, তাহলে ডিফল্ট কোড শাখাটি এড়িয়ে যায় এবং কার্যকর করা হয় না।

উপসংহার

আপনি দেখতে পাচ্ছেন, পাইথন ম্যাচ (ওরফে "সুইচ") বিবৃতিটি আপনার প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করার জন্য একটি শক্তিশালী এবং সুবিধাজনক উপায় সরবরাহ করে। আপনি পাইথনে নতুন বা একজন অভিজ্ঞ ডেভেলপার হোন না কেন, সুইচ স্টেটমেন্ট আপনাকে ক্লিনার, আরও দক্ষ কোড লিখতে সাহায্য করতে পারে।

সময় স্ট্যাম্প:

থেকে আরো Stackabuse