logo

Python Match Case Statement

Vývojári pochádzajúci z jazykov ako C/C++ alebo Java vedia, že existuje podmienené vyhlásenie známe ako a Puzdro na vypínač . Toto Match Case je Switch Case of Python, ktorý bol predstavený v r Python 3.10. Tu musíme najprv odovzdať parameter a potom sa pokúsiť skontrolovať, s akým prípadom je parameter spokojný. Ak nájdeme zhodu, spustíme nejaký kód a ak nenájdeme žiadnu zhodu, vykoná sa predvolená akcia.

Syntax príkazu Python Match Case Statement

Príkaz match case v Pythone je inicializovaný s zápas kľúčové slovo, za ktorým nasleduje parameter, ktorý sa má priradiť. Potom sú rôzne prípady definované pomocou prípad kľúčové slovo a vzor, ​​aby sa zhodovali s parametrom. The _ je zástupný znak, ktorý sa spustí, keď sa všetky prípady nezhodujú s hodnotou parametra.



match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>

Obsah

čo je spracovanie výnimiek v jave

Teraz sa pozrime na niekoľko príkladov, aby sme vedeli, ako funguje príkaz match case v Pythone.

Jednoduché vyhlásenie o zhode

V jednoduchom príkaze Python match case sa presná hodnota porovnáva a porovnáva s hodnotou vzoru malých a veľkých písmen. Existujú rôzne testovacie prípady a ich zodpovedajúci kód, ktoré sa vykonajú iba vtedy, keď sa prípad zhoduje. V opačnom prípade existuje predvolený prípad, ktorý sa spustí, keď sa všetky definované prípady nezhodujú.



Príklad: V tomto príklade požiadame používateľa, aby zadal hodnotu medzi 1 a 3 a zobrazil jej zodpovedajúce číslo v slovách pomocou jednoduchého príkazu na zhodu.

Python
# simple match case statement def runMatch(): num = int(input('Enter a number between 1 and 3: ')) # match case match num: # pattern 1 case 1: print('One') # pattern 2 case 2: print('Two') # pattern 3 case 3: print('Three') # default pattern case _: print('Number not between 1 and 3') runMatch()>

Výkon:

Enter a number between 1 and 3: 5 Number not between 1 and 3>

Zhoda prípadu s operátorom OR

Prípad zápasu príkazy v Pythone sú určené len na porovnávanie vzorov a konkrétnych kľúčových slov alebo parametrov. Ale môžeme tiež použiť príkaz match case v pythone, keď existuje viac ako jeden prípad, ktorý vedie k rovnakému výstupu. V tomto prípade môžeme použiť operátor potrubia, tiež známy ako operátor OR v príkaze match case.



Príklad: V tomto príklade požiadame používateľa, aby zadal hodnotu medzi 1 a 6. Potom sme pomocou operátora OR udelili páry po 1 prípadu, ktorý zobrazí príslušné číslo v slovách.

Python
# python match case with OR operator def runMatch(): num = int(input('Enter a number between 1 and 6: ')) # match case match num: # pattern 1 case 1 | 2: print('One or Two') # pattern 2 case 3 | 4: print('Three or Four') # pattern 3 case 5 | 6: print('Five or Six') # default pattern case _: print('Number not between 1 and 6') runMatch()>

Výkon:

Enter a number between 1 and 6: 4 Three or Four>

Zhoda prípadu s podmienkou Python If

Môžeme tiež použiť Python If podmienka spolu s príkazom match case, keď namiesto zhody presnej hodnoty použijeme podmienku. Na základe podmienky, ak je hodnota True a zodpovedá vzoru malých a veľkých písmen, vykoná sa blok kódu.

Príklad: V tomto príklade použijeme podmienku if spolu s vyhlásením o zhode veľkých písmen, aby sme skontrolovali, či je číslo zadané do ID užívateľa kladné, záporné alebo nulové.

Python
# python match case with if condition def runMatch(): num = int(input('Enter a number: ')) # match case match num: # pattern 1 case num if num>0: print('Positive') # vzor 2 case num if num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Výkon:

Enter a number: -15 Negative>

Porovnajte prípad so vzorom sekvencie

Príkazy Python match case sa bežne používajú na porovnávanie vzorov sekvencií, ako sú zoznamy a reťazce. Je to celkom jednoduché a na kontrolu vzorov môžete použiť pozičné argumenty.

Príklad: V tomto príklade používame reťazec python na kontrolu, či je znak prítomný v reťazec alebo nepoužívanie prípadu zápaliek. Reťazec poskytujeme spolu s indexom znaku, ktorý chceme v reťazci skontrolovať, do veľkosti písmen. Potom sme definovali prípady zápasov, čo by to mohlo byť za postavu.

Python
# match case to check a character in a string def runMatch(): myStr = 'Hello World' # match case match (myStr[6]): case 'w': print('Case 1 matches') case 'W': print('Case 2 matches') case _: print('Character not in the string') runMatch()>

Výkon:

Case 2 matches>

Príklad: V tomto príklade používame a python zoznam na porovnávanie vzorov. Priraďujeme prvý prvok strateného zoznamu a tiež používame pozičné argumenty, aby sme zodpovedali zvyšku zoznamu.

Python
# python match case with list def runMatch(mystr): # match case match mystr: # pattern 1 case ['a']: print('a') # pattern 2 case ['a', *b]: print(f'a and {b}') # pattern 3 case [*a, 'e'] | (*a, 'e'): print(f'{a} and e') # default pattern case _: print('No data') runMatch([]) runMatch(['a']) runMatch(['a', 'b']) runMatch(['b', 'c', 'd', 'e'])>

Výkon:

No data a a and ['b'] ['b', 'c', 'd'] and e>

Zhoda prípadu so slovníkom Python

Príkazy typu match case v Pythone dokážu zvládnuť slovník tiež. Môže sa zhodovať s jedným kľúčom alebo viacerými kľúčmi. Kľúče a hodnoty sa musia nachádzať v slovníku, ak je tam nejaká nesprávne umiestnená hodnota alebo akýkoľvek kľúč, ktorý neexistuje a nezhoduje sa so skutočným slovníkom a hodnotou, tento prípad sa zahodí.

Príklad: V tomto príklade používame slovník s príkazom match case v pythone. Poskytujeme slovníky s rôznymi údajmi pre prípad zhody a bude sa zhodovať s kľúčmi slovníka s rôznymi poskytnutými prípadmi.

previesť z reťazca na celé číslo java
Python
# match case with python dictionaryu def runMatch(dictionary): # match case match dictionary: # pattern 1 case {'name': n, 'age': a}: print(f'Name:{n}, Age:{a}') # pattern 2 case {'name': n, 'salary': s}: print(f'Name:{n}, Salary:{s}') # default pattern case _ : print('Data does not exist') runMatch({'name': 'Jay', 'age': 24}) runMatch({'name': 'Ed', 'salary': 25000}) runMatch({'name': 'Al', 'age': 27}) runMatch({})>

Výkon:

Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>

Zhoda prípadu s triedou Python

Môžeme použiť aj Triedy Pythonu na párovanie prípadov pomocou príkazov Python match case. Vďaka tomu bude kód veľmi čistý, prehľadný a hlavne ľahko čitateľný. Využíva modul dataclasses Pythonu.

Príklad: V tomto príklade sme vytvorili dve triedy s názvom Osoba a Programátor. Prvá myšlienka po zhliadnutí príkazu zhody by bola, že programátor a osoba v príkaze zhody by vytvorili inštanciu príslušných tried, ale nie je to tak. Skontroluje inštanciu s danými hodnotami. Takže prípad Programmer (Om, jazyk = Python, framework = Django) nevytvorí inštanciu, ale skontroluje, či odovzdaný objekt, ktorého názov je inštancia, je skutočnou inštanciou triedy Programátor, potom skontroluje názov, ktorý je Om , jazyk, ktorým je Python a potom framework, ktorým je Django. Týmto spôsobom môžeme skontrolovať hodnoty v inštancii akejkoľvek triedy.

Python
# match case with python classes # import dataclass module from dataclasses import dataclass #Class 1 @dataclass class Person: name: str age: int salary: int # class 2 @dataclass class Programmer: name: str language: str framework: str def runMatch(instance): # match case match instance: # pattern 1 case Programmer('Om', language='Python', framework='Django'): print(f'Name: Om, Language:Python, Framework:Django') # pattern 2 case Programmer('Rishabh', 'C++'): print('Name:Rishabh, Language:C++') # pattern 3 case Person('Vishal', age=5, salary=100): print('Name:Vishal') # pattern 4 case Programmer(name, language, framework): print(f'Name:{name}, Language:{language}, Framework:{framework}') # pattern 5 case Person(): print('He is just a person !') # default case case _: print('This person is nothiing!') programmer1 = Programmer('Om', 'Python', 'Django') programmer2 = Programmer('Rishabh', 'C++', None) programmer3 = Programmer('Sankalp', 'Javascript', 'React') person1 = Person('Vishal', 5, 100) runMatch(programmer1) runMatch(programmer2) runMatch(person1) runMatch(programmer3)>

Výkon:

Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>

Časté otázky týkajúce sa vyhlásenia o zhode prípadu v Pythone

Otázka: Aký je výraz zhody v jazyku Python?

Odpoveď: Príkaz match-case, známy aj ako zhoda vzorov, je funkcia zavedená v Pythone 3.10. Poskytuje stručný a expresívny spôsob vykonávania porovnávania vzorov na dátových štruktúrach, ako sú n-tice, zoznamy a triedy. Umožňuje vám porovnať hodnotu výrazu so sériou vzorov a spustiť zodpovedajúci blok kódu pre zodpovedajúci vzor.

Otázka: Ako sa líši výraz zhody prípadu od výrazu if-elif-else?

Odpoveď: Príkaz match-case je silnejší a expresívnejší konštrukt v porovnaní s príkazmi if-elif-else. Zatiaľ čo príkazy if-elif-else sa spoliehajú na boolovské výrazy, príkazy typu match-case sa môžu zhodovať so vzormi na základe štruktúry a hodnoty údajov. Príkazy zhodného prípadu poskytujú štruktúrovanejší a čitateľnejší spôsob, ako zvládnuť viacero podmienok a vykonávať rôzne akcie na základe týchto podmienok.

Otázka: Aké sú výhody používania výpisu zhody?

Odpoveď: Vyhlásenie o zhode ponúka niekoľko výhod vrátane:

  • Stručnost: Príkazy so zhodnými prípadmi vám umožňujú vyjadriť komplexnú logiku vetvenia stručným a čitateľným spôsobom.
  • Čitateľnosť: Zhoda vzorov robí kód čitateľnejším a zrozumiteľnejším, pretože sa veľmi podobá na problémovú doménu.
  • Bezpečnosť: Vyhlásenia zhodného prípadu poskytujú vyčerpávajúce porovnávanie vzorov a zabezpečujú, že sa vyriešia všetky možné prípady.