capypad
0 Tage Serie
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
python
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.