Python unterscheidet sich von anderen Programmiersprachen durch das Fehlen einer traditionellen switch-case-Anweisung bis Version 3.10. In diesem Tutorial werden wir erkunden, wie das switch-case-Entsprechende in Python funktioniert und wie es mit Hilfe der Strukturmustermatch-Funktion in Python implementiert werden kann.
Verstehen traditioneller Switch-Case-Anweisungen
Vor Python 3.10 mussten Python-Entwickler mehrere if-elif-else-Anweisungen oder Dictionarys verwenden, um switch-case-Funktionalität zu simulieren. Hier ein einfaches Beispiel, das if-elif-else verwendet:
day = input("Enter the day of the week: ").capitalize() if day == "Saturday" or day == "Sunday": print(f"{day} is a weekend.") elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]: print(f"{day} is a weekday.") else: print("That's not a valid day of the week.")
Saturday is a weekend.
Einführung von Match und Case in Python 3.10
Mit Python 3.10 wurden die Schaltflächen match und case eingeführt, die eine elegantere Lösung bieten, die an traditionelle switch-case-Anweisungen in anderen Sprachen erinnert.
Verstehen der grundlegenden Syntax
Considieren wir ein Szenario, in dem wir Wochentage in Wochenende oder Arbeitstage kategorisieren möchten und zugleich einen bestimmten Tag erkennen wollen. So können wir die match-Anweisung verwenden:
day = input("Enter the day of the week: ").capitalize() match day: case "Saturday" | "Sunday": print(f"{day} is a weekend.") case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday": print(f"{day} is a weekday.") case _: print("That's not a valid day of the week.")
Monday is a weekday.
- Benutzereingabe und
capitalize()
-Methode: Wir beginnen, indem wir die Eingabe des Benutzers für den Tag der Woche abfragen und diecapitalize()
-Methode verwenden, um sie richtig formatiert zu bekommen (erste Buchstabe Großbuchstaben, die anderen Kleinbuchstaben). - Verwendung der
match
-Anweisung: Wir verwenden dannmatch
, um die variable Tag zu bewerten. - Mustermann, der die Woche mit dem
case
mustern:- Der erste
case
überprüft, ob die Eingabe entweder „Samstag“ oder „Sonntag“ ist. Das Symbol „|“ (auch bekannt als bitweiser ODER-Operator) wird verwendet, um auf eines von mehreren Mustern zu matchen. Wenn die Eingabe eines dieser beiden Wochentage ist, wird ausgegeben, dass es sich um einen Wochenendestag handelt. - Der zweite Fall deckt alle Wochentage ab, indem er gegen jeden von ihnen überprüft. Wenn die Eingabe mit einem Wochentag übereinstimmt, wird ausgegeben, dass es sich um einen Wochentag handelt.
- Der erste
- DerFallback-Fall (
_
): Der letzte Fall fungiert als Standard (`else`-Anweisung),fangt also alle Eingaben auf, die nicht den bekannten Tagen entsprechen und signalisiert eine ungültige Eingabe. - Keine break-Anweisungen: Beachten Sie, dass wir nach jedem Fall nicht auf
break
angewiesen sind. Python verlässt automatisch den match-Ausdruck nach einem erfolgreichen Match.
Die Syntax von match-case ist lesbarer und präziser im Vergleich zu einer Reihe von if-elif-else-Anweisungen.
Fortgeschrittene Anwendungen von Match und Case in Python
Anwendungen in der Datenwissenschaft
Das match-case-Statement in Python kann in Datenverarbeitungsaufgaben in der Data Science sehr nützlich sein. Das Vorbearbeiten von Daten umfasst oft die Kategorisierung von Daten in verschiedene Gruppen basierend auf spezifischen Kriterien.
Zum Beispiel könnten Sie in einer Datensammlung von Tieren sie basierend auf ihrer Klasse wie Säugetiere, Vögel, Reptilien usw. kategorisieren. Hier ist ein vereinfachtes Beispiel:
animal = "Eagle" match animal: case "Eagle" | "Parrot": print("Bird") case "Lion" | "Tiger": print("Mammal") case "Python" | "Crocodile": print("Reptile") case _: print("Unknown Class")
Bird
Diese Vorgehensweise vereinfacht komplexe if-else-Logik und macht den Code lesbarer und wartbarer, besonders bei der Behandlung großer Datensätze mit mehreren Kategorien.
Maschinelles Lernenszenarien
In maschinellen Lernverfahren ist die Behandlung verschiedener Datentypen entscheidend. Die match-case-Struktur kann für die Feature-Extraktion oder die Modelleinführung eingesetzt werden. Zum Beispiel kann in einem Maschinelernetzwerk, das Wetterbedingungen vorhersagt, match-case verwendet werden, um Temperaturbereiche in ‚Kalt‘, ‚Warm‘, ‚Heiß‘ zu kategorisieren, die dann als Eingabefeatures für das Modell verwendet werden können.
Python Switch Case Gemeinsame Fehler und Beste Praktiken
Debugging-Tipps
Ein gemeinsamer Fehler beim Verwenden von match-case in Python besteht darin, das Unterstrich (_
) für den Standardfall zu vergessen, ähnlich wie ‚else‘ in traditionellen if-else-Statements. Dies kann zu unerwarteten Verhaltensweisen führen, wenn keine der spezifischen Fälle zutreffen. Fügen Sie immer einen Standardfall hinzu, um unerwartete oder diverse Werte zu behandeln.
Leistungsaspekte
Während der match-case-Ausdruck ein leistungsfähiges Tool ist, sollte seine Auswirkung auf die Performance des Python-Codes, insbesondere in großskaligen Anwendungen, berücksichtigt werden. In Szenarien mit vielen Fällen oder komplexem Musterabgleich kann die Performance potenziell beeinflusst werden. Das Profiling und Testen Ihres Codes in realen Szenarien ist entscheidend, um mögliche Performanceprobleme zu verstehen und zu bewältigen.
Python Match-Case Verglichen mit Traditionellem Switch-Case
Komparative Analyse
Python’s match-case unterscheidet sich signifikant von traditionellen switch-case-Anweisungen in Sprachen wie Java oder C++. Zum Beispiel ist die switch-Anweisung in Java auf den Abgleich von skalaren Werten (wie ganzen Zahlen und Enum-Typen) beschränkt, während Python’s match-case eine viel flexiblere Musterabgleichfähigkeit bietet und den Abgleich komplexer Datentypen, wie Sequenzen und Klasseninstanzen, ermöglicht. Dies macht die Python-Implementierung stärker, aber erfordert auch ein tieferes Verständnis von Musterabgleichkonzepten.
Übergangsleitfaden
Für Programmierer, die mit traditionellen switch-case-Anweisungen in Sprachen wie C++ oder Java vertraut sind, erfordert der Übergang zu Python’s match-case eine Umstellung des Denkens von einfachem Wertabgleich hin zu Musterabgleich.
Es ist wichtig zu verstehen, dass Python’s match-case mehr als nur ein switch-case ist; es ist ein vielseitiges Tool zum Dekonstruieren von Datentypen und Extrahieren von Informationen aus komplexen Strukturen. Die Praxis mit verschiedenen Datentypen und Mustern ist der Schlüssel zur Meisterschaft seiner Nutzung.
Fazit
Python führt mit Version 3.10 die Anweisungen match und case ein, die Entwicklern, die mit Switch-Case-Anweisungen in anderen Sprachen vertraut sind, eine lang erwartete Funktion bieten. Sie bieten eine saubere und knappe Methode, um mehrere Bedingungen zu handhaben, und verbessern somit die Lesbarkeit und Wartbarkeit des Codes.
Lesen Sie mehr über Python-Funktionen in unserem umfassenden Tutorial und erkunden Sie dieses und andere Konzepte in unserem Fortgeschrittenen Python-Kurs.
Source:
https://www.datacamp.com/tutorial/python-switch-case