Udviklere, der kommer fra sprog som C/C++ eller Java, ved, at der er en betinget erklæring kendt som en Afbryderkasse . Det her Match Case er Switch Case af Python, som blev introduceret i Python 3.10. Her skal vi først sende en parameter og derefter prøve at kontrollere, i hvilket tilfælde parameteren bliver tilfredsstillet. Hvis vi finder et match, vil vi udføre noget kode, og hvis der ikke er noget match overhovedet, vil en standardhandling finde sted.
Python Match Case Statement Syntaks
Match case-erklæringen i Python initialiseres med match søgeord efterfulgt af parameteren, der skal matches. Derefter defineres forskellige tilfælde ved hjælp af sag søgeord og mønsteret for at matche parameteren. Det _ er jokertegn, der kører, når alle sager ikke matcher parameterværdien.
match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>
Indholdsfortegnelse
java datatyper
- Simple Match Case Statement
- Match Case Statement med OR-operatør
- Match Case Statement med Python If Condition
- Match sagen med sekvensmønsteret
- Match Case Statement med Python Dictionary
- Match Case Statement med Python Class
- Ofte stillede spørgsmål om Python Match Case Statement
Lad os nu se et par eksempler for at vide, hvordan matchcase-erklæringen fungerer i Python.
Simple Match Case Statement
I en simpel Python match case-sætning sammenlignes den nøjagtige værdi og matches med case-mønsterværdien. Der er forskellige testcases og deres tilsvarende kode, som kun udføres, når en case matches. Ellers er der en standardcase, som udføres, når alle de definerede sager ikke matches.
Eksempel: I dette eksempel vil vi bede brugeren om at indtaste en værdi mellem 1 og 3 og vise dets tilsvarende tal i ord ved hjælp af den simple match case-sætning.
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()> Produktion:
Enter a number between 1 and 3: 5 Number not between 1 and 3>
Match Case Statement med OR-operatør
Matchetui sætning i Python er beregnet til kun at matche mønstrene og specifikke søgeord eller parametre. Men vi kan også bruge match case-sætning i python, når der er mere end én case, der resulterer i samme output. I dette tilfælde kan vi bruge pipe operator, også kendt som OR Operator i match case statement.
Eksempel: I dette eksempel vil vi bede brugeren om at indtaste en værdi mellem 1 og 6. Ved at bruge match-case med OR-operator har vi slået parrene et 1 tilfælde hver, som vil vise dets tilsvarende tal i ord.
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()> Produktion:
Enter a number between 1 and 6: 4 Three or Four>
Match Case Statement med Python If Condition
Vi kan også bruge Python If betingelse sammen med match case statement, når vi i stedet for at matche den nøjagtige værdi bruger en betingelse. Baseret på betingelsen, hvis værdien er Sand og matcher sagsmønsteret, udføres kodeblokken.
Eksempel: I dette eksempel vil vi bruge if condition sammen med match case statement til at kontrollere, om et tal indtastet med bruger-id'et positivt, negativt eller nul.
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('Positiv') # mønster 2 case num hvis num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()> Produktion:
Enter a number: -15 Negative>
Match sagen med sekvensmønsteret
Python match case-sætninger bruges almindeligvis til at matche sekvensmønstre såsom lister og strenge. Det er ret nemt og kan bruge positionelle argumenter til at kontrollere mønstrene.
Eksempel: I dette eksempel bruger vi en python-streng til at kontrollere, om et tegn er til stede i snor eller ikke bruger matchcase. Vi leverer strengen sammen med indekset for det tegn, vi ønsker at tjekke for i strengen til matchcases. Derefter definerede vi matchcaserne for, hvad den karakter kunne være.
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()> Produktion:
Case 2 matches>
Eksempel: I dette eksempel bruger vi en python liste til mønstertilpasning. Vi matcher det første element i det tabte og brugte også positionelle argumenter til at matche resten af listen.
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'])> Produktion:
No data a a and ['b'] ['b', 'c', 'd'] and e>
Match Case Statement med Python Dictionary
Python match case statements kan håndtere ordbog såvel. Det kan matche en enkelt nøgle eller flere nøgler. Nøglerne og værdierne skal ligge i ordbogen. Hvis der er en forlagt værdi eller en nøgle, som ikke eksisterer og ikke matcher den faktiske ordbog og værdi, vil sagen blive kasseret.
Eksempel: I dette eksempel bruger vi ordbog med match case-sætning i python. Vi leverer ordbøger med forskellige data til matchcasen, og den vil matche ordbogsnøglerne med forskellige tilfælde.
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({})> Produktion:
streng til heltal java
Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>
Match Case Statement med Python Class
Vi kan også bruge Python klasser at matche tilfælde ved hjælp af Python-match-casesætninger. Dette vil gøre koden meget ren, pæn og endnu vigtigere let læselig. Det gør brug af Python dataclasses-modulet.
Eksempel: I dette eksempel oprettede vi to klasser kaldet Person og Programmer. Den første tanke efter at have set match-erklæringen ville være, at programmøren og personen inde i match-erklæringen ville oprette en forekomst af de respektive klasser, men det er ikke tilfældet. Det vil tjekke for forekomsten med de givne værdier. Så tilfældet Programmer(Om, sprog = Python, framework = Django) vil ikke oprette en instans, men vil kontrollere, at det objekt, der sendes, hvis navn er instans, er en rigtig instans af Programmer-klassen, så vil den tjekke efter navnet, der er Om , sprog, der er Python og derefter framework, der er Django. På denne måde kan vi tjekke for værdierne i forekomsten af enhver klasse.
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)> Produktion:
Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>
Ofte stillede spørgsmål om Python Match Case Statement
Q: Hvad er matchcase-erklæringen i Python?
A: Match-case-sætningen, også kendt som mønstermatching, er en funktion introduceret i Python 3.10. Det giver en kortfattet og udtryksfuld måde at udføre mønstermatch på datastrukturer, såsom tupler, lister og klasser. Det giver dig mulighed for at matche værdien af et udtryk mod en række mønstre og udføre den tilsvarende kodeblok for det matchede mønster.
Q: Hvordan adskiller matchcase-erklæringen sig fra if-elif-else-udsagn?
A: Match-case-sætningen er en mere kraftfuld og udtryksfuld konstruktion sammenlignet med if-elif-else-udsagn. Mens if-elif-else-sætninger er afhængige af booleske udtryk, kan match-case-udsagn matche mønstre baseret på strukturen og værdien af dataene. Match-case-udsagn giver en mere struktureret og læsbar måde at håndtere flere forhold og udføre forskellige handlinger baseret på disse forhold.
Q: Hvad er fordelene ved at bruge match-case-erklæringen?
A: Match-case-erklæringen tilbyder flere fordele, herunder:
- Kortfattethed: Match-case-udsagn giver dig mulighed for at udtrykke kompleks forgreningslogik på en kortfattet og læsbar måde.
- Læsbarhed: Mønstermatching gør koden mere læsbar og selvforklarende, da den minder meget om problemdomænet.
- Sikkerhed: Match-case-erklæringer giver udtømmende mønstermatchning, hvilket sikrer, at alle mulige sager håndteres.