logo

Python Match Case Statement

Utvecklare som kommer från språk som C/C++ eller Java vet att det finns ett villkorligt uttalande som kallas a Switch fallet . Detta Liknande fall är Switch Case of Python som introducerades i Pytonorm 3.10. Här måste vi först skicka en parameter och sedan försöka kontrollera i vilket fall parametern blir nöjd. Om vi ​​hittar en matchning kommer vi att köra någon kod och om det inte finns någon matchning alls kommer en standardåtgärd att äga rum.

Python Match Case Statement Syntax

Matchfallssatsen i Python initieras med match nyckelord följt av parametern som ska matchas. Sedan definieras olika fall med hjälp av fall nyckelord och mönstret för att matcha parametern. De _ är jokertecken som körs när alla fall inte matchar parametervärdet.



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

Innehållsförteckning

regex java

Låt oss nu se några exempel för att veta hur matchfallssatsen fungerar i Python.

Enkelt matchningsfall

I en enkel Python match case-sats jämförs det exakta värdet och matchas med fallmönstervärdet. Det finns olika testfall och deras motsvarande kod som körs endast när ett fall matchas. Annars finns det ett standardfall som körs när alla definierade fall inte matchas.



Exempel: I det här exemplet kommer vi att be användaren att ange ett värde mellan 1 och 3 och visa motsvarande nummer i ord med hjälp av den enkla matchsatsen.

Pytonorm
# 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>

Matcha fallutlåtande med ELLER-operatör

Liknande fall uttalande i Python är avsedda att endast matcha mönstren och specifika sökord eller parametrar. Men vi kan också använda match case-sats i python när det finns mer än ett fall som resulterar i samma utdata. I det här fallet kan vi använda pipe-operator, även känd som OR-operatör i matchfallssats.



Exempel: I det här exemplet kommer vi att be användaren att ange ett värde mellan 1 och 6. Sedan genom att använda matchningsfallet med OR-operatorn har vi klubbat paren ett 1 fall vardera som kommer att visa motsvarande nummer i ord.

Pytonorm
# 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>

Matcha Case Statement med Python If Condition

Vi kan också använda Python If-villkor tillsammans med matchfallssats när vi istället för att matcha det exakta värdet använder ett villkor. Baserat på villkoret, om värdet är True och matchar case-mönstret, exekveras kodblocket.

Exempel: I det här exemplet kommer vi att använda if condition tillsammans med match case-satsen för att kontrollera om ett tal angetts med användar-id:t positivt, negativt eller noll.

Pytonorm
# 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 om num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Produktion:

Enter a number: -15 Negative>

Matcha fodral med sekvensmönstret

Python match case-satser används vanligtvis för att matcha sekvensmönster som listor och strängar. Det är ganska enkelt och kan använda positionsargument för att kontrollera mönstren.

Exempel: I det här exemplet använder vi en pythonsträng för att kontrollera om ett tecken finns i sträng eller inte använder matchfall. Vi tillhandahåller strängen tillsammans med indexet för tecknet vi vill kontrollera efter i strängen till matchningsfallet. Sedan definierade vi matchfallen om vad den karaktären kan vara.

Pytonorm
# 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>

Exempel: I det här exemplet använder vi a python lista för mönstermatchning. Vi matchar det första elementet i det förlorade och använde även positionsargument för att matcha resten av listan.

Pytonorm
# 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>

Matcha fallbeskrivning med Python Dictionary

Python match case-satser kan hantera lexikon också. Det kan matcha en enda nyckel eller flera nycklar. Nycklarna och värdena måste finnas i ordboken, om det finns något felplacerat värde eller någon nyckel som inte finns och inte matchar den faktiska ordboken och värdet, kommer det fallet att kasseras.

Exempel: I det här exemplet använder vi ordbok med matchfallssats i python. Vi tillhandahåller ordböcker med olika data för matchningsfallet, och det kommer att matcha ordboksnycklarna med olika fall.

delsträng java
Pytonorm
# 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:

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

Matcha fallbeskrivning med Python Class

Vi kan också använda Python-klasser för att matcha fall med hjälp av Python matcha fallsatser. Detta kommer att göra koden mycket ren, snygg och ännu viktigare lättläsbar. Den använder sig av Python-dataklassmodulen.

Exempel: I det här exemplet skapade vi två klasser som heter Person och Programmer. Den första tanken efter att ha sett matchsatsen skulle vara att programmeraren och personen i matchsatsen skulle skapa en instans av respektive klass, men det är inte fallet. Den kommer att kontrollera instansen med de givna värdena. Så fallet Programmer(Om, språk = Python, ramverk = Django) kommer inte att skapa en instans utan kommer att kontrollera att objektet som skickas vars namn är instans är en riktig instans av klassen Programmer, sedan kommer den att leta efter namnet som är Om , språk som är Python och sedan ramverk som är Django. På så sätt kan vi kontrollera värdena i instansen av vilken klass som helst.

Pytonorm
# 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>

Vanliga frågor om Python Match Case Statement

F: Vad är matchfallsförklaringen i Python?

S: Match-case-satsen, även känd som mönstermatchning, är en funktion som introduceras i Python 3.10. Det ger ett kortfattat och uttrycksfullt sätt att utföra mönstermatchning på datastrukturer, såsom tupler, listor och klasser. Det låter dig matcha värdet av ett uttryck mot en serie mönster och exekvera motsvarande kodblock för det matchade mönstret.

F: Hur skiljer sig matchningsfallet från if-elif-else-satserna?

S: Match-case-satsen är en mer kraftfull och uttrycksfull konstruktion jämfört med if-elif-else-satser. Medan if-elif-else-satser förlitar sig på booleska uttryck, kan match-case-satser matcha mönster baserat på strukturen och värdet av datan. Match-case-satser ger ett mer strukturerat och läsbart sätt att hantera flera villkor och utföra olika åtgärder baserat på dessa villkor.

F: Vilka är fördelarna med att använda matchningsfallet?

S: Matchningsförklaringen erbjuder flera fördelar, inklusive:

  • Kortfattad: Match-case-satser gör att du kan uttrycka komplex förgreningslogik på ett kortfattat och läsbart sätt.
  • Läsbarhet: Mönstermatchning gör koden mer läsbar och självförklarande, eftersom den liknar problemdomänen.
  • Säkerhet: Match-case statements ger uttömmande mönstermatchning, vilket säkerställer att alla möjliga fall hanteras.