Dezvoltatorii care provin din limbaje precum C/C++ sau Java știu că există o declarație condiționată cunoscută sub numele de a Comutați cazul . Acest Se potrivește caz este Switch Case din Python care a fost introdus în Piton 3.10. Aici trebuie mai întâi să trecem un parametru și apoi să încercăm să verificăm în ce caz parametrul este satisfăcut. Dacă găsim o potrivire, vom executa un cod și dacă nu există nicio potrivire, va avea loc o acțiune implicită.
Sintaxa instrucțiunii Python Match Case
Declarația match case în Python este inițializată cu Meci cuvântul cheie urmat de parametrul care urmează să fie potrivit. Apoi sunt definite diferite cazuri folosind caz cuvântul cheie și modelul pentru a se potrivi cu parametrul. The _ este caracterul wildcard care rulează atunci când toate cazurile nu se potrivesc cu valoarea parametrului.
match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>
Cuprins
cod de codificare huffman
- Declarație de potrivire simplă
- Potriviți declarația cazului cu operatorul OR
- Potriviți declarația Case cu Python If Condition
- Potriviți majuscule și minuscule cu modelul secvenței
- Potriviți declarația caz cu dicționarul Python
- Potriviți declarația caz cu clasa Python
- Întrebări frecvente privind declarația Python Match Case
Acum, să vedem câteva exemple pentru a ști cum funcționează declarația match case în Python.
Declarație de potrivire simplă
Într-o declarație simplă de potrivire a casei Python, valoarea exactă este comparată și potrivită cu valoarea modelului casei. Există diferite cazuri de testare și codul lor corespunzător care se vor executa numai atunci când se potrivește un caz. În caz contrar, există un caz implicit care se execută atunci când toate cazurile definite nu se potrivesc.
Exemplu: În acest exemplu, vom cere utilizatorului să introducă o valoare între 1 și 3 și să afișeze numărul corespunzător în cuvinte utilizând instrucțiunea simplă potrivire.
Piton # 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()> Ieșire:
Enter a number between 1 and 3: 5 Number not between 1 and 3>
Potriviți declarația cazului cu operatorul OR
Cazul meciului declarațiile din Python sunt menite să fie doar pentru potrivirea modelelor și a anumitor cuvinte cheie sau parametri. Dar putem folosi și declarația de potrivire a cazului în python atunci când există mai multe cazuri care au ca rezultat aceeași ieșire. În acest caz, putem folosi operatorul de conducte, cunoscut și sub numele de operator OR în declarația match case.
Exemplu: În acest exemplu, vom cere utilizatorului să introducă o valoare între 1 și 6. Apoi, folosind operatorul de potrivire cu majuscule cu operatorul SAU, am marcat perechile câte câte un caz, care va afișa numărul corespunzător în cuvinte.
Piton # 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()> Ieșire:
Enter a number between 1 and 6: 4 Three or Four>
Potriviți declarația Case cu Python If Condition
De asemenea, putem folosi Condiție Python If împreună cu declarația de potrivire a cazului când în loc să potrivim valoarea exactă, folosim o condiție. Pe baza condiției, dacă valoarea este True și se potrivește cu modelul casei, blocul de cod este executat.
Exemplu: În acest exemplu, vom folosi condiția if împreună cu declarația de potrivire a cazului pentru a verifica dacă un număr introdus cu ID-ul utilizatorului este pozitiv, negativ sau zero.
Piton # 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('Pozitiv') # model 2 case num dacă num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()> Ieșire:
Enter a number: -15 Negative>
Potriviți majuscule și minuscule cu modelul secvenței
Declarațiile de potrivire Python sunt utilizate în mod obișnuit pentru a potrivi modele de secvență, cum ar fi liste și șiruri. Este destul de ușor și poate folosi argumente poziționale pentru verificarea tiparelor.
Exemplu: În acest exemplu, folosim un șir python pentru a verifica dacă un caracter este prezent în şir sau neutilizarea majusculei de potrivire. Furnizăm șirul împreună cu indexul caracterului pe care vrem să-l verificăm în șirul de potrivire. Apoi am definit cazurile de potrivire cu privire la ceea ce ar putea fi acel personaj.
Piton # 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()> Ieșire:
Case 2 matches>
Exemplu: În acest exemplu folosim a lista python pentru potrivirea modelului. Potrivim primul element al pierdut și, de asemenea, am folosit argumente poziționale pentru a se potrivi cu restul listei.
Piton # 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'])> Ieșire:
tip casting și conversie tip în java
No data a a and ['b'] ['b', 'c', 'd'] and e>
Potriviți declarația caz cu dicționarul Python
Declarațiile de potrivire Python pot gestiona dicţionar de asemenea. Se poate potrivi cu o singură cheie sau cu mai multe chei. Cheile și valorile trebuie să se afle în dicționar, dacă există vreo valoare greșită sau orice cheie care nu există și nu se potrivește cu dicționarul și valoarea actuală, acel caz va fi eliminat.
Exemplu: În acest exemplu, folosim dicționar cu declarația de potrivire a cazului în python. Oferim dicționare cu date diferite pentru cazul potrivirii și va potrivi cheile dicționarului cu diferite cazuri furnizate.
Piton # 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({})> Ieșire:
Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>
Potriviți declarația caz cu clasa Python
Putem folosi, de asemenea Clasele Python pentru a potrivi cazurile folosind instrucțiunile Python de potrivire a cazurilor. Acest lucru va face codul foarte curat, îngrijit și, mai important, ușor de citit. Utilizează modulul Python dataclasses.
Exemplu: În acest exemplu, am creat două clase numite Persoană și Programator. Primul gând după ce am văzut instrucțiunea de potrivire ar fi că Programatorul și Persoana din interiorul instrucțiunii de potrivire ar crea o instanță a claselor respective, dar nu este cazul. Se va verifica pentru instanță cu valorile date. Deci cazul Programer (Om, language = Python, framework = Django) nu va crea o instanță, ci va verifica dacă obiectul trecut al cărui nume este instanță este o instanță reală a clasei Programer, apoi va verifica numele care este Om , limbaj care este Python și apoi framework care este Django. În acest fel putem verifica valorile în instanța oricărei clase.
Piton # 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)> Ieșire:
Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>
Întrebări frecvente privind declarația Python Match Case
Î: Care este declarația de potrivire a cazului în Python?
R: Declarația de potrivire a cazurilor, cunoscută și sub denumirea de potrivire a modelelor, este o caracteristică introdusă în Python 3.10. Oferă o modalitate concisă și expresivă de a efectua potrivirea modelelor pe structurile de date, cum ar fi tupluri, liste și clase. Vă permite să potriviți valoarea unei expresii cu o serie de modele și să executați blocul de cod corespunzător pentru modelul potrivit.
Î: Cum diferă declarația de potrivire a cazului de declarațiile if-elif-else?
R: Instrucțiunea potrivire-case este un construct mai puternic și mai expresiv în comparație cu declarațiile if-elif-else. În timp ce instrucțiunile if-elif-else se bazează pe expresii booleene, instrucțiunile potrivesc cu majuscule pot potrivi modele bazate pe structura și valoarea datelor. Declarațiile de potrivire a majusculelor oferă o modalitate mai structurată și mai lizibilă de a gestiona mai multe condiții și de a efectua diferite acțiuni pe baza acelor condiții.
Î: Care sunt beneficiile utilizării declarației meci-case?
R: Declarația de potrivire oferă mai multe beneficii, inclusiv:
- Concizie: declarațiile de potrivire a majusculelor vă permit să exprimați logica de ramificare complexă într-un mod concis și ușor de citit.
- Lizibilitate: potrivirea modelelor face codul mai lizibil și mai explicit, deoarece seamănă foarte mult cu domeniul problemei.
- Siguranță: declarațiile de potrivire a cazurilor oferă o potrivire exhaustivă a modelelor, asigurând că toate cazurile posibile sunt tratate.