python / expert
Snippet
Erweitertes Pattern Matching mit Guards
Structural Pattern Matching (eingeführt in Python 3.10) ermöglicht die ausdrucksstarke Dekonstruktion von Daten. Die Verwendung von 'Guards' (die 'if'-Klausel nach einem Muster) erlaubt das Hinzufügen bedingter Logik direkt in den Matching-Prozess, was eine präzisere Kontrolle über komplexe Dictionary- oder Objektstrukturen ermöglicht.
snippet.py
1
2
3
4
5
6
7
8
def process_data(payload):match payload:case {"type": "user", "id": int(uid)} if uid > 1000:return f"Admin logic for {uid}"case {"type": "user", "id": int(uid)}:return f"User logic for {uid}"case _:raise ValueError("Unknown format")
Erklärung
1
match payload:
Startet den Pattern-Matching-Block gegen die Variable 'payload'.
2
case {"type": "user", "id": int(uid)} if uid > 1000:
Matcht eine Dict-Struktur, erfasst 'uid' und wendet einen bedingten Guard an.
3
case _:
Das Wildcard-Muster, das alles matcht, was nicht von vorherigen Cases erfasst wurde.