Gardes et caractères génériques
Ajouter des conditions et des cas génériques
Gardes et caractères génériques est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Affiner les correspondances
Parfois, un motif structurel ne suffit pas ; vous avez également besoin d'une condition. Les gardes ajoutent une vérification if à un cas, et les jokers fournissent des correspondances générales flexibles.
Ajouter une garde
Écrivez if <condition> après un motif. Le cas ne correspond que lorsque le motif convient et que la garde est vraie.
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')Les gardes utilisent les noms capturés
Une garde peut faire référence aux variables associées par le motif. Ici, la paire capturée est vérifiée pour s'assurer de son égalité.
point = [3, 3]
match point:
case [x, y] if x == y:
print('on the diagonal')
case [x, y]:
print('off the diagonal')Si la garde échoue
Si la structure correspond, mais que la garde est fausse, la correspondance continue avec le cas suivant au lieu de s'arrêter.
value = 5
match value:
case n if n > 100:
print('big')
case n:
print('fell through to here:', n)Gardes avec des motifs de classe
Les gardes se combinent avec tous les types de motifs, y compris les motifs de classe, pour exprimer des conditions précises sur les attributs des objets.
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)))Rappel sur le joker
Le simple caractère de soulignement _ correspond à n'importe quelle valeur et n'associe rien. Placé dans le dernier cas, il traite tout ce qui n'a pas été pris en charge auparavant.
x = 'unexpected'
match x:
case 'a':
print('letter a')
case _:
print('catch-all')Capture ou joker
Une capture nommée correspond également à n'importe quelle valeur, mais la conserve, tandis que _ la ignore. Utilisez un nom lorsque vous avez besoin de la valeur dans le bloc.
value = 42
match value:
case 0:
print('zero')
case other: # capture: keeps the value
print('value was', other)Jokers à l'intérieur des motifs
Le caractère de soulignement peut apparaître dans des motifs plus grands pour ignorer les parties qui ne vous intéressent pas.
record = ('user', 42, 'ignore_me')
match record:
case ('user', user_id, _):
print('user id:', user_id)Combiner OR, gardes et jokers
Ces fonctionnalités se combinent. Un motif OR, suivi d'une garde puis d'un joker final, permet de créer un classificateur expressif.
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))Exhaustivité
Contrairement à certains langages, Python n'impose pas qu'une correspondance soit exhaustive. Si aucun cas ne correspond, l'instruction ne fait tout simplement rien. Ajoutez un dernier case _ lorsque vous voulez garantir qu'une branche sera toujours exécutée.
color = 'purple'
result = 'no match'
match color:
case 'red':
result = 'stop'
case 'green':
result = 'go'
print(result)Gardes sur des données déstructurées
Les gardes s'associent naturellement aux motifs de séquence et de mappage, ce qui vous permet de tester les valeurs que vous venez d'extraire.
data = [10, 20]
match data:
case [a, b] if a + b > 25:
print('sum is large')
case [a, b]:
print('sum is small')Vérification rapide
Que se passe-t-il lorsqu'un motif correspond à la structure, mais que sa condition de garde est fausse ?
Récapitulatif
Vous avez appris à ajouter des conditions et des cas généraux.
- Les gardes ajoutent une vérification
ifqui peut utiliser les noms capturés. - Une garde qui échoue laisse la place au cas suivant.
_correspond et abandonne la valeur ; un nom la capture.- Ajoutez un dernier
case _pour garantir l'exécution d'une branche.
Questions Fréquemment Posées
La leçon « Gardes et caractères génériques » est-elle gratuite ?
Oui — le texte complet de « Gardes et caractères génériques » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Gardes et caractères génériques » ?
Ajouter des conditions et des cas génériques Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Gardes et caractères génériques » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Les bases de match et case
- Correspondance des séquences et des mappages
- Motifs de classes
- Gardes et caractères génériques