मुख्य सामग्री पर जाएं
Python

Python Switch Case स्टेटमेंट: शुरुआती के लिए मार्गदर्शिका

Python के match-case का अन्वेषण करें: इसके सिंटैक्स, डेटा साइंस, ML में अनुप्रयोग, और पारंपरिक switch-case के साथ तुलनात्मक विश्लेषण।
Matt Crabtree's photo
Matt Crabtree
अपडेट किया गया · 5 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

अपना निःशुल्क खाता बनाएँ

अभ्यास और ट्रैक अपनी प्रगति को।

Google के साथ जारी रखें
जारी रखने पर, आप हमारी उपयोग की शर्तें, हमारी गोपनीयता नीति को स्वीकार करते हैं और यह भी कि आपका डेटा संयुक्त राज्य अमेरिका में संग्रहीत किया जाता है।

Python 3.10 में पेश किए गए Python के match-case स्टेटमेंट का अन्वेषण करें और जानें कि स्ट्रक्चरल पैटर्न मैचिंग कैसे Python प्रोग्रामिंग में एक नया स्तर की गरिमा और शक्ति लाती है। हम इसके सिंटैक्स, डेटा साइंस और मशीन लर्निंग में अनुप्रयोगों, और अन्य भाषाओं के पारंपरिक switch-case स्टेटमेंट्स से इसकी तुलना पर चर्चा करेंगे। यदि आप Python में नए हैं, तो हमारा Python चीट शीट फॉर बिगिनर्स अवश्य देखें। 

पारंपरिक Switch Case स्टेटमेंट्स को समझना

Python 3.10 से पहले, Python डेवलपर्स को switch case जैसी कार्यक्षमता पाने के लिए कई if-elif-else स्टेटमेंट्स या डिक्शनरीज़ का उपयोग करना पड़ता था। यहाँ if-elif-else का उपयोग करते हुए एक बुनियादी उदाहरण है:

day = "Saturday"

if day == "Saturday" or day == "Sunday":
    print(f"{day} is a weekend.")
elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]:
    print(f"{day} is a weekday.")
else:
    print("That's not a valid day of the week.")

# Saturday is a weekend.

Python 3.10 में Match और Case का परिचय

match-case के आगमन के साथ, अब Python में स्ट्रक्चरल पैटर्न मैचिंग पर आधारित एक सुविधा मौजूद है, जो आपको अधिक स्वच्छ और शक्तिशाली कंडीशनल लॉजिक लिखने देती है।

स्ट्रक्चरल पैटर्न मैचिंग क्या है?

PEP 634 में पेश की गई स्ट्रक्चरल पैटर्न मैचिंग, डेटा स्ट्रक्चर की आकृति और सामग्री के आधार पर उन्हें मैच और डीस्ट्रक्चर करने का तरीका है। यह पारंपरिक वैल्यू मैचिंग से अधिक लचीली है, जिससे डेवलपर्स सीक्वेंसेज़, मैपिंग्स, और कस्टम क्लास इंस्टेंस के साथ काम कर सकते हैं।

Match-Case का बेसिक सिंटैक्स

यहाँ match-case का एक सरल उदाहरण है। चलिए सप्ताह के दिनों को वीकेंड और वीकडे में वर्गीकृत करते हैं:

day = "Monday"

# Match the day to predefined patterns
match day:
    case "Saturday" | "Sunday":
        print(f"{day} is a weekend.")  # Match weekends
    case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday":
        print(f"{day} is a weekday.")  # Match weekdays
    case _:
        print("That's not a valid day of the week.")  # Default case

# Monday is a weekday.

उदाहरण में प्रमुख अवधारणाएँ:

  1. case के साथ पैटर्न मैचिंग:

    • case "Saturday" | "Sunday": सूचीबद्ध किसी भी पैटर्न से मेल खाता है। | प्रतीक OR ऑपरेटर जैसा व्यवहार करता है।

    • case _: अमान्य इनपुट को संभालने के लिए कैच-ऑल (डिफॉल्ट) केस।

  2. break की आवश्यकता नहीं: पारंपरिक switch-case के विपरीत, Python पहले सफल मैच के बाद match ब्लॉक से बाहर निकल जाता है।

match-case बनाम if-elif-else की तुलना

नीचे दी गई तालिका में, आप देख सकते हैं कि दोनों तकनीकें कैसे तुलना करती हैं: 

विशेषता if-elif-else match-case
कब पेश हुआ प्रारंभिक Python संस्करणों से उपलब्ध Python 3.10 में पेश
सिंटैक्स if, elif और else कीवर्ड का उपयोग match और case कीवर्ड का उपयोग
पठनीयता कई शर्तों के साथ विस्तृत हो सकता है जटिल पैटर्न्स के साथ अधिक संक्षिप्त और पठनीय
डिफॉल्ट केस डिफॉल्ट परिदृश्य के लिए else का उपयोग डिफॉल्ट केस के लिए वाइल्डकार्ड के रूप में _ का उपयोग
पैटर्न मैचिंग सरल कंडीशन चेक तक सीमित जटिल पैटर्न मैचिंग का समर्थन (जैसे, सीक्वेंसेज़)
प्रदर्शन सरल शर्तों के लिए सामान्यतः कुशल जटिल पैटर्न्स में संभावित रूप से अधिक कारगर
स्कोप हर ब्लॉक के लिए इंडेंटेशन से स्पष्ट स्कोप चाहिए स्कोप स्वाभाविक रूप से case ब्लॉक्स के अंतर्गत परिभाषित
उपयोग के मामलों सरल निर्णय-लेने वाले कार्यों के लिए उपयुक्त जटिल डेटा स्ट्रक्चर के डीकंस्ट्रक्शन के लिए आदर्श
लचीलापन स्केलर तुलना तक सीमित जटिल डेटा प्रकारों और स्ट्रक्चर्स का मिलान कर सकता है
स्वचालित ब्रेक कुछ भाषाओं में स्पष्ट break की आवश्यकता केस मैच होते ही स्वतः बाहर निकल जाता है

Python में Match और Case के उन्नत उपयोग

डेटा साइंस अनुप्रयोग

डेटा साइंस में डेटा प्रीप्रोसेसिंग कार्यों के लिए Python का match-case स्टेटमेंट बहुत उपयोगी हो सकता है। प्रीप्रोसेसिंग में अक्सर विशिष्ट मानदंडों के आधार पर डेटा को विभिन्न समूहों में वर्गीकृत करना शामिल होता है।

उदाहरण के लिए, जानवरों के किसी डेटासेट में, आप उन्हें उनके वर्ग के आधार पर जैसे स्तनपायी, पक्षी, सरीसृप आदि में वर्गीकृत करना चाहेंगे। यहाँ एक सरल उदाहरण है:

animal = "Eagle"
match animal:
    case "Eagle" | "Parrot":
        print("Bird")
    case "Lion" | "Tiger":
        print("Mammal")
    case "Python" | "Crocodile":
        print("Reptile")
    case _:
        print("Unknown Class")

# Bird

यह तरीका जटिल if-else लॉजिक को सरल बनाता है और विशेषकर कई श्रेणियों वाले बड़े डेटासेट्स के साथ काम करते समय कोड को अधिक पठनीय और मेंटेन करने योग्य बनाता है।

वेब डेवलपमेंट

Django या Flask जैसे वेब फ्रेमवर्क्स में, आप match-case का उपयोग HTTP रिक्वेस्ट्स को रूट करने या विशिष्ट एरर कोड्स को संभालने के लिए कर सकते हैं। हमारे ऑनलाइन कोर्स के साथ Python for Developers के बारे में और जानें। 

उदाहरण: HTTP मेथड्स को रूट करना

# Example: Handling HTTP methods in a Flask-like application
method = "POST"

match method:
    case "GET":
        print("Fetching resource...")
    case "POST":
        print("Creating resource...")
    case "PUT":
        print("Updating resource...")
    case "DELETE":
        print("Deleting resource...")
    case _:
        print("Unsupported HTTP method.")

# Creating resource...

व्याख्या:

  • method वेरिएबल HTTP रिक्वेस्ट के प्रकार का प्रतिनिधित्व करता है।
  • हर case संभावित HTTP मेथड से मेल खाता है, जिससे अन्यथा कई if-elif स्टेटमेंट्स की आवश्यकता सरल हो जाती है।

API हैंडलिंग

API प्रतिक्रियाओं को प्रोसेस करते समय, match-case का उपयोग विभिन्न स्टेटस कोड्स को संभालने या JSON प्रतिक्रियाओं को वर्गीकृत करने के लिए किया जा सकता है।

उदाहरण: स्टेटस कोड्स को संभालना

# Example: API response status code handling
status_code = 200

match status_code:
    case 200:
        print("Request succeeded.")
    case 404:
        print("Resource not found.")
    case 500:
        print("Server error. Please try again later.")
    case _:
        print("Unknown status code.")

# Request succeeded.

यह तरीका API के परिणामों की व्याख्या और उन पर प्रतिक्रिया देना आसान बनाता है।

सरल बनाम जटिल पैटर्न मैचिंग

Python का match-case केवल स्थिर मानों के मिलान तक सीमित नहीं है; यह अधिक जटिल पैटर्न्स को भी संभाल सकता है। यहाँ भेद देखें:

सरल कॉन्स्टेंट मैचिंग

स्ट्रिंग्स या इन्टीजर्स जैसे साधारण मिलान, ऊपर दिए गए उदाहरणों की तरह, साफ़-सुथरी और पठनीय लॉजिक के लिए बेहतरीन हैं।

जटिल पैटर्न मैचिंग

स्ट्रक्चर्ड डेटा (जैसे डिक्शनरीज़, सीक्वेंसेज़) के साथ काम करते समय, match-case डेटा निकालने और उसे कुशलता से संसाधित करने में सक्षम है।

उदाहरण: डेटा स्ट्रक्चर्स का मिलान

# Example: Categorizing configurations
config = {"type": "database", "name": "PostgreSQL", "version": 13}

match config:
    case {"type": "database", "name": name, "version": version}:
        print(f"Database: {name} (Version {version})")
    case {"type": "cache", "name": name}:
        print(f"Cache system: {name}")
    case _:
        print("Unknown configuration.")

# Database: PostgreSQL (Version 13)

व्याख्या:

  • पहला case डिक्शनरी से name और version निकालता है, जिससे स्ट्रक्चर्ड डेटा के साथ काम करना आसान होता है।

  • यह Python की स्ट्रक्चरल पैटर्न मैचिंग की वास्तविक शक्ति को दिखाता है, जो पारंपरिक switch-case इम्प्लीमेंटेशन्स से कहीं आगे जाती है।

यहाँ केवल प्रासंगिक जोड़ के साथ संक्षिप्त किया गया अनुभाग है:

बेसिक Switch-Case से आगे

बेसिक वैल्यू मैचिंग से आगे, Python का match-case कुछ ऐसी विशेषताएँ शामिल करता है जो इसे अन्य भाषाओं के पारंपरिक switch-case स्टेटमेंट्स से अलग बनाती हैं।

गार्ड क्लॉज़

गार्ड एक if शर्त होती है जिसे किसी case से जोड़ा जाता है, और केस के मैच होने के लिए उसका सच होना आवश्यक है। इससे आप पैटर्न मैचिंग को अतिरिक्त लॉजिक के साथ जोड़ सकते हैं — जो पारंपरिक switch स्टेटमेंट्स नहीं कर सकते:

match point:
    case (x, y) if x == y:
        print(f"Point is on the diagonal at {x}")
    case (x, y) if x > 0 and y > 0:
        print(f"Point {point} is in the first quadrant")
    case (x, y):
        print(f"Point {point} is somewhere else")

# Point (3, 7) is in the first quadrant
 

जब केवल पैटर्न से मामलों के बीच अंतर करना पर्याप्त विशिष्ट न हो, तब गार्ड उपयोगी होते हैं।

switch-case से आगे: डीस्ट्रक्चरिंग पैटर्न्स

ऊपर के उदाहरण switch-case-शैली के उपयोग पर केंद्रित हैं, लेकिन यह जानना उपयोगी है कि Python का match-case सीक्वेंसेज़, डिक्शनरीज़, और क्लास इंस्टेंस को भी डीस्ट्रक्चर कर सकता है — मैच के हिस्से के रूप में उनके भीतर से मानों को कैप्चर करते हुए। यह अन्य भाषाओं में switch स्टेटमेंट्स की क्षमताओं से बहुत आगे जाता है और यही कारण है कि स्ट्रक्चरल पैटर्न मैचिंग को Python में जोड़ा गया।

उदाहरण के लिए, किसी क्लास इंस्टेंस का मिलान:

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

point = Point(0, 5)

match point:
    case Point(x=0, y=0):
        print("Origin")
    case Point(x=0, y=y):
        print(f"On the Y-axis at {y}")
    case Point():
        print("Somewhere else on the plane")

# On the Y-axis at 5

यदि आप इन उन्नत पैटर्न्स को गहराई से खोजना चाहते हैं, तो PEP 636 देखें, जो स्ट्रक्चरल पैटर्न मैचिंग पर आधिकारिक ट्यूटोरियल है।

Python Switch Case: आम गलतियाँ और सर्वोत्तम प्रथाएँ

डिबगिंग सुझाव

Python में match-case का उपयोग करते समय एक आम गलती डिफॉल्ट केस के लिए अंडरस्कोर (_) शामिल करना भूल जाना है, जो पारंपरिक if-else स्टेटमेंट्स में 'else' के समान है। यदि कोई विशिष्ट केस मेल नहीं खाता, तो यह अप्रत्याशित व्यवहार का कारण बन सकता है। हमेशा अप्रत्याशित या विविध मानों को संभालने के लिए एक डिफॉल्ट केस शामिल करें।

प्रदर्शन संबंधी विचार

हालाँकि match-case स्टेटमेंट एक शक्तिशाली उपकरण है, फिर भी विशेषकर बड़े पैमाने के अनुप्रयोगों में, इसके प्रदर्शन पर प्रभाव को ध्यान में रखना चाहिए। बहुत अधिक मामलों या जटिल पैटर्न मैचिंग वाली स्थितियों में प्रदर्शन प्रभावित हो सकता है। संभावित प्रदर्शन समस्याओं को समझने और कम करने के लिए वास्तविक-दुनिया परिदृश्यों में अपने कोड का प्रोफाइलिंग और परीक्षण करना महत्वपूर्ण है।

Python Match-Case बनाम पारंपरिक Switch-Case

तुलनात्मक विश्लेषण

Python का match-case, Java या C++ जैसी भाषाओं में पाए जाने वाले पारंपरिक switch-case स्टेटमेंट्स से काफी भिन्न है। उदाहरण के लिए, Java में switch स्टेटमेंट केवल स्केलर मानों (जैसे इन्टीजर्स और enum प्रकार) के मिलान तक सीमित है, जबकि Python का match-case कहीं अधिक लचीली पैटर्न मैचिंग प्रदान करता है, जिससे सीक्वेंसेज़ और क्लास इंस्टेंस जैसे जटिल डेटा प्रकारों का मिलान संभव होता है। इससे Python का इम्प्लीमेंटेशन अधिक शक्तिशाली बन जाता है, लेकिन पैटर्न मैचिंग अवधारणाओं की गहरी समझ भी आवश्यक होती है।

ट्रांज़िशनिंग गाइड

C++ या Java जैसी भाषाओं में पारंपरिक switch-case स्टेटमेंट्स से परिचित प्रोग्रामर्स के लिए, Python के match-case पर आना, सरल वैल्यू मैचिंग से पैटर्न मैचिंग की ओर सोच में बदलाव की माँग करता है।

यह समझना महत्वपूर्ण है कि Python का match-case केवल switch-case नहीं है; यह डेटा प्रकारों को डीकंस्ट्रक्ट करने और जटिल स्ट्रक्चर्स से जानकारी निकालने के लिए एक बहुमुखी उपकरण है। विभिन्न डेटा प्रकारों और पैटर्न्स के साथ अभ्यास करना इसके उपयोग में महारत हासिल करने की कुंजी है।

निष्कर्ष

Python के match और case स्टेटमेंट्स, संस्करण 3.10 में पेश किए गए, आधुनिक Python की एक स्थापित विशेषता बन चुके हैं। तब से, स्ट्रक्चरल पैटर्न मैचिंग परिपक्व होकर एक विश्वसनीय उपकरण बन गया है, जो भाषा के हर सक्रिय रूप से समर्थित संस्करण में उपलब्ध है — नवीनतम स्थिर रिलीज़ Python 3.14.4 (अप्रैल 2026), साथ ही 3.13 और 3.12 सहित।

आप हमारे पूर्ण ट्यूटोरियल में Python Functions के बारे में और पढ़ सकते हैं और हमारे Intermediate Python कोर्स में इस और अन्य अवधारणाओं का अन्वेषण कर सकते हैं।


Matt Crabtree's photo
Author
Matt Crabtree
LinkedIn

एआई और एडटेक क्षेत्र में सीनियर संपादक। डेटा और एआई रुझानों की पड़ताल के लिए प्रतिबद्ध।  

Python Switch Case FAQs

यदि एक match-case स्टेटमेंट में दो केस एक ही इनपुट से मेल खाते हैं तो क्या होता है?

Python इन मामलों का मूल्यांकन उनके क्रम में करता है जिस क्रम में वे लिखे गए हैं। पहला मेल खाता केस निष्पादित होता है और match ब्लॉक तुरंत समाप्त हो जाता है।

क्या match-case का उपयोग कस्टम क्लासेस या ऑब्जेक्ट्स के साथ किया जा सकता है?

हाँ, match-case कस्टम क्लासेस के साथ काम कर सकता है। आप ऐट्रिब्यूट्स से मेल खाने के लिए पैटर्न परिभाषित कर सकते हैं या अतिरिक्त लॉजिक लागू करने के लिए गार्ड्स का उपयोग कर सकते हैं।

क्या match-case, if-elif-else से तेज है?

प्रदर्शन का अंतर शर्तों की जटिलता पर निर्भर करता है। सरल वैल्यू चेक्स के लिए, दोनों का प्रदर्शन लगभग समान होता है। हालाँकि, जटिल पैटर्न मैचिंग के लिए match-case अधिक कुशल और अधिक पठनीय हो सकता है।

match-case स्टेटमेंट में गार्ड क्या है?

गार्ड वह शर्त है जो case के बाद निर्दिष्ट की जाती है और यह निर्धारित करती है कि कोई केस कब मेल खाना चाहिए। उदाहरण के लिए:

match value:
    case x if x > 10:
        print("Value is greater than 10.")

क्या आप 3.10 से पहले के Python संस्करणों में match-case का उपयोग कर सकते हैं?

नहीं, match-case केवल Python 3.10 और उसके बाद के संस्करणों में उपलब्ध है। पहले के संस्करणों के लिए, आप समान कार्यक्षमता प्राप्त करने के लिए if-elif-else या डिक्शनरी मैपिंग का उपयोग कर सकते हैं।

विषय
Python

आज ही Python सीखें

कोर्स

इंटरमीडिएट Python

4 घंटा
1.4M
Matplotlib से विज़ुअलाइज़ेशन बनाकर और pandas से DataFrames को संभालकर अपने डेटा विज्ञान कौशल बढ़ाएँ।
विवरण देखेंपाठ्यक्रम शुरू करें

लर्निंग पाथ

Python प्रोग्रामिंग

19 घंटा
अपने प्रोग्रामिंग कौशल को बेहतर बनाएं। कोड को अनुकूलित करना, फ़ंक्शन और परीक्षण लिखना, और सर्वोत्तम-अभ्यास सॉफ़्टवेयर इंजीनियरिंग तकनीकों का उपयोग करना सीखें।

अपना निःशुल्क खाता बनाएँ

अभ्यास और ट्रैक अपनी प्रगति को।

Google के साथ जारी रखें
जारी रखने पर, आप हमारी उपयोग की शर्तें, हमारी गोपनीयता नीति को स्वीकार करते हैं और यह भी कि आपका डेटा संयुक्त राज्य अमेरिका में संग्रहीत किया जाता है।
और देखें