logo

Python Match Case-Anweisung

Entwickler von Sprachen wie C/C++ oder Java wissen, dass es eine bedingte Anweisung namens a gibt Schaltergehäuse . Das Streichholzetui ist der Switch Case von Python, der eingeführt wurde Python 3.10. Hier müssen wir zunächst einen Parameter übergeben und dann versuchen zu prüfen, in welchem ​​Fall der Parameter erfüllt wird. Wenn wir eine Übereinstimmung finden, führen wir Code aus. Wenn es überhaupt keine Übereinstimmung gibt, wird eine Standardaktion ausgeführt.

Python Match Case-Anweisungssyntax

Die Match-Case-Anweisung in Python wird mit initialisiert übereinstimmen Schlüsselwort, gefolgt vom Parameter, der abgeglichen werden soll. Dann werden verschiedene Fälle mit definiert Fall Schlüsselwort und das Muster, das dem Parameter entspricht. Der _ ist das Platzhalterzeichen, das ausgeführt wird, wenn nicht alle Fälle mit dem Parameterwert übereinstimmen.



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

Inhaltsverzeichnis

df loc

Sehen wir uns nun einige Beispiele an, um zu erfahren, wie die Match-Case-Anweisung in Python funktioniert.

Einfache Match-Case-Anweisung

In einer einfachen Python-Match-Case-Anweisung wird der genaue Wert mit dem Case-Musterwert verglichen und abgeglichen. Es gibt verschiedene Testfälle und den entsprechenden Code, der nur ausgeführt wird, wenn ein Fall übereinstimmt. Andernfalls gibt es einen Standardfall, der ausgeführt wird, wenn nicht alle definierten Fälle übereinstimmen.



Beispiel: In diesem Beispiel bitten wir den Benutzer, einen Wert zwischen 1 und 3 einzugeben und die entsprechende Zahl in Worten mithilfe der einfachen Match-Case-Anweisung anzuzeigen.

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

Ausgabe:

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

Vergleichen Sie die Case-Anweisung mit dem OR-Operator

Streichholzetui Die Anweisung in Python soll nur dazu dienen, die Muster und bestimmte Schlüsselwörter oder Parameter abzugleichen. Wir können aber auch die Match-Case-Anweisung in Python verwenden, wenn es mehr als einen Fall gibt, der zur gleichen Ausgabe führt. In diesem Fall können wir den Pipe-Operator, auch bekannt als OR-Operator, in der Match-Case-Anweisung verwenden.



Beispiel: In diesem Beispiel bitten wir den Benutzer, einen Wert zwischen 1 und 6 einzugeben. Anschließend haben wir mithilfe des Groß-/Kleinschreibung-Matchings mit OR-Operator die Paare zu jeweils einem Groß-/Kleinschreibungspaar zusammengefasst, wodurch die entsprechende Zahl in Worten angezeigt wird.

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

Ausgabe:

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

Passen Sie die Case-Anweisung an die Python-If-Bedingung an

Wir können auch das verwenden Python If-Bedingung zusammen mit der Match-Case-Anweisung, wenn wir statt des exakten Werts eine Bedingung verwenden. Basierend auf der Bedingung wird der Codeblock ausgeführt, wenn der Wert „True“ ist und mit dem Fallmuster übereinstimmt.

Beispiel: In diesem Beispiel verwenden wir die if-Bedingung zusammen mit der case-Match-Anweisung, um zu prüfen, ob eine eingegebene Zahl neben der Benutzer-ID positiv, negativ oder null ist.

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('Positive') # Muster 2 case num if num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Ausgabe:

Enter a number: -15 Negative>

Ordnen Sie die Groß-/Kleinschreibung dem Sequenzmuster zu

Python-Match-Case-Anweisungen werden häufig verwendet, um Sequenzmuster wie Listen und Zeichenfolgen abzugleichen. Es ist recht einfach und kann Positionsargumente zur Überprüfung der Muster verwenden.

Beispiel: In diesem Beispiel verwenden wir eine Python-Zeichenfolge, um zu überprüfen, ob ein Zeichen in der Datei vorhanden ist Zeichenfolge oder keine Streichholzschachtel verwenden. Wir stellen die Zeichenfolge zusammen mit dem Index des Zeichens bereit, nach dem wir in der Zeichenfolge suchen möchten, um die Groß-/Kleinschreibung zu berücksichtigen. Dann haben wir die Übereinstimmungsfälle definiert, was dieses Zeichen sein könnte.

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

Ausgabe:

Case 2 matches>

Beispiel: In diesem Beispiel verwenden wir a Python-Liste zum Mustervergleich. Wir gleichen das erste Element der verlorenen Liste ab und verwendeten auch Positionsargumente, um den Rest der Liste abzugleichen.

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

Ausgabe:

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

Vergleichen Sie die Case-Anweisung mit dem Python-Wörterbuch

Python-Match-Case-Anweisungen können damit umgehen Wörterbuch sowie. Es kann einem einzelnen Schlüssel oder mehreren Schlüsseln entsprechen. Die Schlüssel und Werte müssen sich im Wörterbuch befinden. Wenn ein falsch platzierter Wert oder ein Schlüssel vorhanden ist, der nicht vorhanden ist und nicht mit dem tatsächlichen Wörterbuch und Wert übereinstimmt, wird dieser Fall verworfen.

Beispiel: In diesem Beispiel verwenden wir ein Wörterbuch mit der Anweisung „Match Case“ in Python. Wir stellen Wörterbücher mit unterschiedlichen Daten zur Verfügung, um die Groß-/Kleinschreibung zu vergleichen, und es werden die Wörterbuchschlüssel mit den unterschiedlichen bereitgestellten Groß-/Kleinschreibungen abgeglichen.

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

Ausgabe:

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

Case-Anweisung mit Python-Klasse abgleichen

Wir können auch verwenden Python-Klassen um Fälle mithilfe der Python-Match-Case-Anweisungen abzugleichen. Dadurch wird der Code sehr sauber, ordentlich und, was noch wichtiger ist, leicht lesbar. Es nutzt das Python-Dataclasses-Modul.

Beispiel: In diesem Beispiel haben wir zwei Klassen namens Person und Programmer erstellt. Der erste Gedanke, nachdem ich die match-Anweisung gesehen habe, wäre, dass der Programmierer und die Person in der match-Anweisung eine Instanz der jeweiligen Klassen erstellen würden, aber das ist nicht der Fall. Es wird nach der Instanz mit den angegebenen Werten gesucht. Im Fall „Programmer(Om, Sprache = Python, Framework = Django)“ wird also keine Instanz erstellt, sondern geprüft, ob das übergebene Objekt mit dem Namen „Instanz“ eine echte Instanz der Klasse „Programmer“ ist. Anschließend wird nach dem Namen „Om“ gesucht , eine Sprache, die Python ist, und dann ein Framework, das Django ist. Auf diese Weise können wir die Werte in der Instanz jeder Klasse überprüfen.

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

Ausgabe:

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

Häufig gestellte Fragen zur Python Match Case-Anweisung

F: Was ist die Match-Case-Anweisung in Python?

A: Die Match-Case-Anweisung, auch als Mustervergleich bekannt, ist eine Funktion, die in Python 3.10 eingeführt wurde. Es bietet eine prägnante und ausdrucksstarke Möglichkeit, Mustervergleiche für Datenstrukturen wie Tupel, Listen und Klassen durchzuführen. Es ermöglicht Ihnen, den Wert eines Ausdrucks mit einer Reihe von Mustern abzugleichen und den entsprechenden Codeblock für das übereinstimmende Muster auszuführen.

F: Wie unterscheidet sich die Match-Case-Anweisung von if-elif-else-Anweisungen?

A: Die Match-Case-Anweisung ist im Vergleich zu if-elif-else-Anweisungen ein leistungsfähigeres und ausdrucksstärkeres Konstrukt. Während if-elif-else-Anweisungen auf booleschen Ausdrücken basieren, können Match-Case-Anweisungen Muster basierend auf der Struktur und dem Wert der Daten abgleichen. Match-Case-Anweisungen bieten eine strukturiertere und lesbarere Möglichkeit, mehrere Bedingungen zu verarbeiten und basierend auf diesen Bedingungen verschiedene Aktionen auszuführen.

Java-Programmschleife

F: Welche Vorteile bietet die Verwendung der Match-Case-Anweisung?

A: Die Match-Case-Anweisung bietet mehrere Vorteile, darunter:

  • Prägnanz: Match-Case-Anweisungen ermöglichen es Ihnen, komplexe Verzweigungslogik prägnant und lesbar auszudrücken.
  • Lesbarkeit: Der Mustervergleich macht den Code lesbarer und selbsterklärender, da er der Problemdomäne sehr ähnlich ist.
  • Sicherheit: Match-Case-Anweisungen bieten einen umfassenden Mustervergleich und stellen sicher, dass alle möglichen Fälle behandelt werden.