Guards en wildcards
Voeg voorwaarden en vang-allesgevallen toe
Guards en wildcards is een gratis Python Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.
Matches verfijnen
Soms is een structureel patroon niet genoeg en hebt u ook een voorwaarde nodig. Voorwaarden voegen een if-test toe aan een case, en jokerpatronen bieden flexibele algemene patronen.
Een voorwaarde toevoegen
Schrijf if <condition> na een patroon. De case matcht alleen wanneer het patroon past en de voorwaarde waar is.
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')Voorwaarden gebruiken vastgelegde namen
Een voorwaarde kan verwijzen naar variabelen die door het patroon zijn vastgelegd. Hier wordt het vastgelegde paar op gelijkheid gecontroleerd.
point = [3, 3]
match point:
case [x, y] if x == y:
print('on the diagonal')
case [x, y]:
print('off the diagonal')Als de voorwaarde niet klopt
Als de structuur matcht maar de voorwaarde onwaar is, gaat het matchen door naar de volgende case in plaats van te stoppen.
value = 5
match value:
case n if n > 100:
print('big')
case n:
print('fell through to here:', n)Voorwaarden met klassepatronen
Voorwaarden kunnen met elk type patroon worden gecombineerd, ook met klassepatronen, voor precieze voorwaarden voor objectattributen.
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)))Samenvatting van jokerpatronen
De losse underscore _ matcht met alles en legt niets vast. Als laatste case verwerkt deze alles wat eerder niet is opgevangen.
x = 'unexpected'
match x:
case 'a':
print('letter a')
case _:
print('catch-all')Vastlegging versus jokerpatroon
Een benoemde vastlegging matcht ook met alles, maar bewaart de waarde, terwijl _ deze weggooit. Gebruik een naam wanneer u de waarde in de body nodig hebt.
value = 42
match value:
case 0:
print('zero')
case other: # capture: keeps the value
print('value was', other)Jokerpatronen binnen patronen
De underscore kan binnen grotere patronen staan om delen te negeren die u niet nodig hebt.
record = ('user', 42, 'ignore_me')
match record:
case ('user', user_id, _):
print('user id:', user_id)OR, voorwaarden en jokerpatronen combineren
Deze functies kunnen worden samengesteld. Een OR-patroon, gevolgd door een voorwaarde en daarna een laatste jokerpatroon, vormt een veelzijdige classificator.
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))Volledigheid
In tegenstelling tot sommige talen dwingt Python niet af dat een match volledig is. Als geen enkele case matcht, doet de instructie eenvoudigweg niets. Voeg een laatste case _ toe wanneer u wilt garanderen dat er altijd een tak wordt uitgevoerd.
color = 'purple'
result = 'no match'
match color:
case 'red':
result = 'stop'
case 'green':
result = 'go'
print(result)Voorwaarden op gedestructureerde gegevens
Voorwaarden passen van nature bij sequentie- en mappingpatronen, zodat u de waarden kunt testen die u zojuist hebt uitgelezen.
data = [10, 20]
match data:
case [a, b] if a + b > 25:
print('sum is large')
case [a, b]:
print('sum is small')Korte controle
Wat gebeurt er wanneer een patroon structureel matcht, maar de voorwaarde ervan onwaar is?
Samenvatting
U hebt geleerd voorwaarden en algemene cases toe te voegen.
- Voorwaarden voegen een
if-test toe die vastgelegde namen kan gebruiken. - Bij een onjuiste voorwaarde gaat de uitvoering door naar de volgende case.
_matcht en gooit de waarde weg; een naam legt de waarde vast.- Voeg een laatste
case _toe voor een gegarandeerde tak.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 76
- Lessen
- 320
Veelgestelde vragen
Is de les “Guards en wildcards” gratis?
Ja — de volledige tekst van “Guards en wildcards” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.
Wat leer ik in “Guards en wildcards”?
Voeg voorwaarden en vang-allesgevallen toe Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Python Academy te beginnen?
Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Guards en wildcards”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Python Academy?
Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Basisprincipes van match en case
- Sequenties en mappings matchen
- Klassepatronen
- Guards en wildcards