logo

Python Match Case Statement

Vývojáři z jazyků jako C/C++ nebo Java vědí, že existuje podmíněný příkaz známý jako a Pouzdro na vypínač . Tento Shodný případ je Switch Case of Python, který byl představen v Krajta 3.10. Zde musíme nejprve předat parametr a poté se pokusit zkontrolovat, s jakým případem je parametr spokojen. Pokud najdeme shodu, spustíme nějaký kód a pokud žádná shoda není, proběhne výchozí akce.

Syntaxe příkazu Python Match Case Statement

Příkaz match case v Pythonu je inicializován pomocí zápas klíčové slovo následované parametrem, který má být nalezen. Poté jsou různé případy definovány pomocí pouzdro klíčové slovo a vzor, ​​aby odpovídaly parametru. The _ je zástupný znak, který se spustí, když všechny případy neodpovídají hodnotě parametru.



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

hostitelský linux

Nyní se podívejme na několik příkladů, abychom věděli, jak příkaz match case funguje v Pythonu.

Simple Match Case Statement

V jednoduchém příkazu Python match case je přesná hodnota porovnána a spárována s hodnotou vzoru case. Existují různé testovací případy a jejich odpovídající kód, které se spustí pouze v případě, že se případ shoduje. V opačném případě existuje výchozí případ, který se spustí, když se všechny definované případy neshodují.



Příklad: V tomto příkladu požádáme uživatele, aby zadal hodnotu mezi 1 a 3 a zobrazil odpovídající číslo ve slovech pomocí jednoduchého příkazu match case.

Krajta
# 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ýstup:

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

Porovnejte výpis případu s operátorem OR

Shodný případ příkazy v Pythonu jsou určeny pouze pro porovnávání vzorů a konkrétních klíčových slov nebo parametrů. Ale můžeme také použít příkaz match case v pythonu, když existuje více než jeden případ, který vede ke stejnému výstupu. V tomto případě můžeme použít operátor potrubí, známý také jako operátor OR v příkazu match case.



Příklad: V tomto příkladu požádáme uživatele, aby zadal hodnotu mezi 1 a 6. Poté jsme pomocí operátoru OR udeřili páry o jeden případ, který zobrazí odpovídající číslo ve slovech.

Krajta
# 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ýstup:

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

Porovnejte příkaz Case s podmínkou Python If

Můžeme také použít Python If podmínka spolu s příkazem match case, kdy místo shody přesné hodnoty použijeme podmínku. Na základě podmínky, pokud je hodnota True a odpovídá vzoru malých a velkých písmen, je proveden blok kódu.

Příklad: V tomto příkladu použijeme podmínku if spolu s příkazem match case ke kontrole, zda je číslo zadané do ID uživatele kladné, záporné nebo nulové.

Krajta
# 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ýstup:

Enter a number: -15 Negative>

Spojte případ se vzorem sekvence

Příkazy Python match case se běžně používají ke spárování sekvenčních vzorů, jako jsou seznamy a řetězce. Je to docela snadné a může používat poziční argumenty pro kontrolu vzorů.

Příklad: V tomto příkladu používáme řetězec python ke kontrole, zda je znak přítomen v tětiva nebo nepoužívání případu shody. Řetězec poskytujeme spolu s indexem znaku, který chceme v řetězci zkontrolovat, do velikosti písmen. Potom jsme definovali případy zápasů, jaká by tato postava mohla být.

Krajta
# 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ýstup:

Case 2 matches>

Příklad: V tomto příkladu používáme a seznam pythonů pro porovnávání vzorů. Porovnáváme první prvek ztraceného seznamu a také používáme poziční argumenty, aby odpovídaly zbytku seznamu.

Krajta
# 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ýstup:

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

Porovnejte příkaz s malými písmeny se slovníkem Python

Python příkazy match case zvládnou slovník také. Může odpovídat jednomu klíči nebo více klíčům. Klíče a hodnoty se musí nacházet ve slovníku, pokud existuje nějaká nesprávně umístěná hodnota nebo jakýkoli klíč, který neexistuje a neodpovídá skutečnému slovníku a hodnotě, bude tento případ zahozen.

Příklad: V tomto příkladu používáme slovník s příkazem match case v pythonu. Poskytujeme slovníky s různými daty k případu shody a bude odpovídat klíčům slovníku s různými poskytnutými případy.

Krajta
# 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ýstup:

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

Porovnejte příkaz Case s třídou Python

Můžeme také použít třídy Python pro spárování případů pomocí příkazů Python match case. Díky tomu bude kód velmi čistý, úhledný a hlavně snadno čitelný. Využívá modul datových tříd Pythonu.

Příklad: V tomto příkladu jsme vytvořili dvě třídy nazvané Osoba a Programátor. První myšlenka po zhlédnutí příkazu shody by byla, že programátor a osoba uvnitř příkazu shody vytvoří instanci příslušných tříd, ale není tomu tak. Zkontroluje instanci s danými hodnotami. Takže v případě Programmer(Om, jazyk = Python, framework = Django) nevytvoří instanci, ale zkontroluje, že předaný objekt, jehož jméno je instance, je skutečnou instancí třídy Programmer, pak zkontroluje název, který je Om , jazyk, kterým je Python a poté framework, kterým je Django. Tímto způsobem můžeme zkontrolovat hodnoty v instanci libovolné třídy.

Krajta
# 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ýstup:

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

Nejčastější dotazy k prohlášení o shodě případu v Pythonu

Otázka: Co je výraz match case v Pythonu?

Odpověď: Příkaz match-case, známý také jako porovnávání vzorů, je funkce zavedená v Pythonu 3.10. Poskytuje stručný a expresivní způsob, jak provádět porovnávání vzorů na datových strukturách, jako jsou n-tice, seznamy a třídy. Umožňuje porovnat hodnotu výrazu s řadou vzorů a provést odpovídající blok kódu pro shodný vzor.

Otázka: Jak se liší příkaz typu match case od příkazu if-elif-else?

Odpověď: Příkaz match-case je ve srovnání s příkazy if-elif-else silnější a výraznější konstrukt. Zatímco příkazy if-elif-else spoléhají na booleovské výrazy, příkazy match-case mohou odpovídat vzorům na základě struktury a hodnoty dat. Příkazy odpovídajících případů poskytují strukturovanější a čitelnější způsob, jak zpracovat více podmínek a provádět různé akce na základě těchto podmínek.

co je struktura ve struktuře dat

Otázka: Jaké jsou výhody použití prohlášení o shodě?

Odpověď: Prohlášení o shodě nabízí několik výhod, včetně:

  • Stručnost: Příkazy shodného případu vám umožňují vyjádřit složitou logiku větvení stručným a čitelným způsobem.
  • Čitelnost: Porovnávání vzorů činí kód čitelnějším a samovysvětlujícím, protože se velmi podobá problémové doméně.
  • Bezpečnost: Příkazy shodného případu poskytují vyčerpávající shodu vzorů a zajišťují, že budou vyřešeny všechny možné případy.