0Pricing
Python Academy · Lektion

Guards und Wildcards

Bedingungen und Auffangfälle ergänzen

Guards und Wildcards ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Matches verfeinern

Manchmal reicht ein strukturelles Pattern nicht aus; zusätzlich wird eine Bedingung benötigt. Guards ergänzen einen if-Test in einem Case, und Wildcards bieten flexible Auffangfälle.

Einen Guard hinzufügen

Schreiben Sie if <condition> hinter ein Pattern. Der Case passt nur, wenn das Pattern passt und der Guard wahr ist.

n = 7

match n:
    case x if x < 0:
        print('negative')
    case x if x == 0:
        print('zero')
    case x if x > 0:
        print('positive')

Guards verwenden erfasste Namen

Ein Guard kann auf Variablen verweisen, die vom Pattern gebunden wurden. Hier wird das erfasste Paar auf Gleichheit geprüft.

point = [3, 3]

match point:
    case [x, y] if x == y:
        print('on the diagonal')
    case [x, y]:
        print('off the diagonal')

Wenn der Guard fehlschlägt

Wenn die Struktur passt, der Guard aber falsch ist, wird der Abgleich mit dem nächsten Case fortgesetzt, anstatt zu enden.

value = 5

match value:
    case n if n > 100:
        print('big')
    case n:
        print('fell through to here:', n)

Guards mit Klassen-Patterns

Guards lassen sich mit jedem Pattern-Typ kombinieren, auch mit Klassen-Patterns, um präzise Bedingungen für Objektattribute zu formulieren.

from dataclasses import dataclass

@dataclass
class Order:
    total: float

def discount(order):
    match order:
        case Order(total=t) if t > 100:
            return 'free shipping'
        case Order():
            return 'standard shipping'

print(discount(Order(150)))
print(discount(Order(50)))

Zusammenfassung der Wildcards

Der allein stehende Unterstrich _ passt auf alles und bindet nichts. Als letzter Case behandelt er alles, was zuvor nicht erfasst wurde.

x = 'unexpected'

match x:
    case 'a':
        print('letter a')
    case _:
        print('catch-all')

Capture oder Wildcard

Ein benanntes Capture passt ebenfalls auf alles, behält den Wert aber bei, während _ ihn verwirft. Verwenden Sie einen Namen, wenn Sie den Wert im Block benötigen.

value = 42

match value:
    case 0:
        print('zero')
    case other:        # capture: keeps the value
        print('value was', other)

Wildcards innerhalb von Patterns

Der Unterstrich kann innerhalb größerer Patterns stehen, um Teile zu ignorieren, die Sie nicht benötigen.

record = ('user', 42, 'ignore_me')

match record:
    case ('user', user_id, _):
        print('user id:', user_id)

OR, Guards und Wildcards kombinieren

Diese Funktionen lassen sich kombinieren. Ein OR-Pattern, gefolgt von einem Guard und einem abschließenden Wildcard-Pattern, ergibt einen ausdrucksstarken Klassifizierer.

def classify(n):
    match n:
        case 0 | 1:
            return 'binary digit'
        case x if x % 2 == 0:
            return 'even'
        case _:
            return 'odd'

print(classify(0))
print(classify(4))
print(classify(7))

Vollständigkeit

Anders als manche Sprachen erzwingt Python keinen vollständigen Abgleich. Wenn kein Case passt, tut die Anweisung einfach nichts. Fügen Sie einen abschließenden case _ hinzu, wenn garantiert immer ein Zweig ausgeführt werden soll.

color = 'purple'
result = 'no match'

match color:
    case 'red':
        result = 'stop'
    case 'green':
        result = 'go'

print(result)

Guards mit destrukturierten Daten

Guards lassen sich natürlich mit Sequenz- und Mapping-Patterns kombinieren, sodass Sie die gerade entnommenen Werte prüfen können.

data = [10, 20]

match data:
    case [a, b] if a + b > 25:
        print('sum is large')
    case [a, b]:
        print('sum is small')

Kurze Überprüfung

Was geschieht, wenn ein Pattern strukturell passt, seine Guard-Bedingung aber falsch ist?

Zusammenfassung

Sie haben gelernt, Bedingungen und Auffangfälle hinzuzufügen.

  • Guards fügen einen if-Test hinzu, der erfasste Namen verwenden kann.
  • Bei einem fehlschlagenden Guard wird mit dem nächsten Case fortgefahren.
  • _ passt und verwirft den Wert; ein Name erfasst ihn.
  • Fügen Sie einen abschließenden case _ hinzu, wenn garantiert ein Zweig ausgeführt werden soll.

Häufig gestellte Fragen

Ist die Lektion „Guards und Wildcards“ kostenlos?

Ja — der vollständige Text von „Guards und Wildcards“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Guards und Wildcards“?

Bedingungen und Auffangfälle ergänzen Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Guards und Wildcards“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen von match und case
  2. Sequenzen und Mappings abgleichen
  3. Klassenmuster
  4. Guards und Wildcards
← Zurück zu Python Academy