logo

Python Match Case-verklaring

Ontwikkelaars die uit talen als C/C++ of Java komen, weten dat er een voorwaardelijke instructie bestaat die bekend staat als a Schakelkast . Dit Match geval is de Switch Case van Python die werd geïntroduceerd in Python 3.10. Hier moeten we eerst een parameter doorgeven en vervolgens proberen te controleren in welk geval de parameter tevreden wordt gesteld. Als we een match vinden, voeren we een code uit en als er helemaal geen match is, vindt er een standaardactie plaats.

Python Match Case-instructiesyntaxis

De match case-instructie in Python wordt geïnitialiseerd met de overeenkomst trefwoord gevolgd door de parameter die moet worden gekoppeld. Vervolgens worden verschillende gevallen gedefinieerd met behulp van de geval trefwoord en het patroon dat overeenkomt met de parameter. De _ is het jokerteken dat wordt uitgevoerd wanneer niet alle cases overeenkomen met de parameterwaarde.



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

Inhoudsopgave

actress zeenat aman

Laten we nu een paar voorbeelden bekijken om te weten hoe de match case-instructie werkt in Python.

Eenvoudige Match Case-verklaring

In een eenvoudige Python match case-instructie wordt de exacte waarde vergeleken en gematcht met de case-patroonwaarde. Er zijn verschillende testgevallen en de bijbehorende code die alleen wordt uitgevoerd als er een match is. Anders is er een standaardgeval dat wordt uitgevoerd als niet alle gedefinieerde gevallen overeenkomen.



Voorbeeld: In dit voorbeeld vragen we de gebruiker een waarde tussen 1 en 3 in te voeren en het overeenkomstige getal in woorden weer te geven met behulp van de eenvoudige match-case-instructie.

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()>

Uitgang:

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

Match de casusverklaring met de OK-operator

Match geval -instructie in Python is bedoeld om alleen de patronen en specifieke trefwoorden of parameters te matchen. Maar we kunnen ook de match case-instructie in Python gebruiken als er meer dan één geval is dat in dezelfde uitvoer resulteert. In dit geval kunnen we pipe-operator gebruiken, ook wel OR-operator genoemd in matchcase-instructies.



Voorbeeld: In dit voorbeeld vragen we de gebruiker om een ​​waarde tussen 1 en 6 in te voeren. Vervolgens hebben we met behulp van de match case met OR-operator de paren één 1 case geknuppeld, waarbij het overeenkomstige getal in woorden wordt weergegeven.

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()>

Uitgang:

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

Match Case-instructie met Python If-voorwaarde

Wij kunnen ook gebruik maken van de Python If-voorwaarde samen met de match case-instructie wanneer we in plaats van de exacte waarde te matchen, een voorwaarde gebruiken. Op basis van de voorwaarde wordt het codeblok uitgevoerd als de waarde True is en overeenkomt met het hoofdletterpatroon.

Voorbeeld: In dit voorbeeld gebruiken we de if-voorwaarde samen met de match-case-instructie om te controleren of een ingevoerd getal bt de gebruikers-ID positief, negatief of nul is.

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('Positief') # patroon 2 hoofdletternummer als aantal< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Uitgang:

Enter a number: -15 Negative>

Match Case met het reekspatroon

Python match case-instructies worden vaak gebruikt om reekspatronen zoals lijsten en tekenreeksen met elkaar te matchen. Het is vrij eenvoudig en kan positionele argumenten gebruiken om de patronen te controleren.

Voorbeeld: In dit voorbeeld gebruiken we een Python-string om te controleren of een teken aanwezig is in de snaar of gebruik geen luciferdoosje. We leveren de string samen met de index van het teken waarop we willen controleren in de string van de matchcase. Vervolgens hebben we de matchcases gedefinieerd over wat dat personage zou kunnen zijn.

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()>

Uitgang:

Case 2 matches>

Voorbeeld: In dit voorbeeld gebruiken we a Python-lijst voor patroonafstemming. We matchen het eerste element van de verloren elementen en gebruiken ook positionele argumenten om de rest van de lijst te matchen.

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'])>

Uitgang:

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

Match Case-instructie met Python-woordenboek

Match-case-instructies van Python kunnen overweg woordenboek ook. Het kan overeenkomen met een enkele sleutel of meerdere sleutels. De sleutels en waarden moeten zich in het woordenboek bevinden. Als er een misplaatste waarde is of een sleutel die niet bestaat en niet overeenkomt met het daadwerkelijke woordenboek en de werkelijke waarde, wordt dat geval genegeerd.

Voorbeeld: In dit voorbeeld gebruiken we een woordenboek met match-case-instructie in Python. We bieden woordenboeken met verschillende gegevens voor de overeenkomende gevallen, en deze zullen de woordenboeksleutels matchen met de verschillende aangeboden gevallen.

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({})>

Uitgang:

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

Match Case-instructie met Python-klasse

Wij kunnen ook gebruiken Python-lessen om cases te matchen met behulp van de Python match case-instructies. Dit maakt de code zeer schoon, netjes en, nog belangrijker, gemakkelijk leesbaar. Het maakt gebruik van de Python dataclasses-module.

Voorbeeld: In dit voorbeeld hebben we twee klassen gemaakt met de namen Person en Programmer. De eerste gedachte na het zien van de matchverklaring zou zijn dat de programmeur en de persoon in de matchverklaring een instantie van de respectievelijke klassen zouden creëren, maar dat is niet het geval. Er wordt gecontroleerd op de instantie met de opgegeven waarden. Dus het geval Programmer (Om, taal = Python, framework = Django) zal geen instantie maken, maar zal controleren of het doorgegeven object waarvan de naam instance is een echte instantie van de Programmer-klasse is, en vervolgens zal het controleren op de naam die Om is , taal die Python is en vervolgens een raamwerk dat Django is. Op deze manier kunnen we de waarden in de instantie van elke klasse controleren.

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)>

Uitgang:

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

Veelgestelde vragen over Python Match Case-verklaring

Vraag: Wat is de matchcase-instructie in Python?

A: De match-case-instructie, ook wel patroonmatching genoemd, is een functie die is geïntroduceerd in Python 3.10. Het biedt een beknopte en expressieve manier om patroonmatching uit te voeren op datastructuren, zoals tupels, lijsten en klassen. Hiermee kunt u de waarde van een expressie vergelijken met een reeks patronen en het overeenkomstige codeblok voor het overeenkomende patroon uitvoeren.

Vraag: Hoe verschilt de match-case-instructie van if-elif-else-instructies?

A: De match-case-instructie is een krachtiger en expressiever construct vergeleken met if-elif-else-statements. Terwijl if-elif-else-instructies afhankelijk zijn van Booleaanse expressies, kunnen match-case-instructies patronen matchen op basis van de structuur en waarde van de gegevens. Match-case-verklaringen bieden een meer gestructureerde en leesbare manier om met meerdere voorwaarden om te gaan en verschillende acties uit te voeren op basis van die voorwaarden.

teken naar tekenreeks

Vraag: Wat zijn de voordelen van het gebruik van de match-case-instructie?

A: De match-case-verklaring biedt verschillende voordelen, waaronder:

  • Beknoptheid: Met Match-case-instructies kunt u complexe vertakkingslogica op een beknopte en leesbare manier uitdrukken.
  • Leesbaarheid: Patroonmatching maakt de code leesbaarder en spreekt voor zich, omdat deze sterk lijkt op het probleemdomein.
  • Veiligheid: Match-case-verklaringen bieden uitgebreide patroonvergelijking, waardoor wordt gegarandeerd dat alle mogelijke gevallen worden afgehandeld.