Guardie e caratteri jolly
Aggiungere condizioni e casi generici
Guardie e caratteri jolly è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.
Affinare le corrispondenze
A volte un pattern strutturale non è sufficiente: serve anche una condizione. Le guardie aggiungono un test if a un caso, mentre i caratteri jolly offrono casi generali flessibili.
Aggiungere una guardia
Scriva if <condition> dopo un pattern. Il caso corrisponde solo quando il pattern è compatibile e la guardia è vera.
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')Le guardie usano i nomi acquisiti
Una guardia può fare riferimento alle variabili associate dal pattern. Qui la coppia acquisita viene verificata per controllare che i valori siano uguali.
point = [3, 3]
match point:
case [x, y] if x == y:
print('on the diagonal')
case [x, y]:
print('off the diagonal')Se la guardia non è soddisfatta
Se la struttura corrisponde ma la guardia è falsa, la ricerca della corrispondenza continua con il caso successivo invece di interrompersi.
value = 5
match value:
case n if n > 100:
print('big')
case n:
print('fell through to here:', n)Guardie con i pattern di classe
Le guardie possono essere combinate con qualsiasi tipo di pattern, inclusi i pattern di classe, per definire condizioni precise sugli attributi degli oggetti.
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)))Riepilogo del carattere jolly
Il carattere di sottolineatura _ da solo corrisponde a qualsiasi valore senza associarlo a nulla. Come caso finale, gestisce tutto ciò a cui non hanno corrisposto i casi precedenti.
x = 'unexpected'
match x:
case 'a':
print('letter a')
case _:
print('catch-all')Acquisizione o carattere jolly
Anche un'acquisizione con nome corrisponde a qualsiasi valore, ma ne conserva il contenuto, mentre _ lo scarta. Usi un nome quando ha bisogno del valore nel corpo del caso.
value = 42
match value:
case 0:
print('zero')
case other: # capture: keeps the value
print('value was', other)Caratteri jolly all'interno dei pattern
Il carattere di sottolineatura può comparire all'interno di pattern più grandi per ignorare le parti che non interessano.
record = ('user', 42, 'ignore_me')
match record:
case ('user', user_id, _):
print('user id:', user_id)Combinare OR, guardie e caratteri jolly
Queste funzionalità possono essere composte. Un pattern OR, seguito da una guardia e infine da un carattere jolly, consente di creare un classificatore espressivo.
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))Completezza dei casi
A differenza di alcuni linguaggi, Python non impone che un match sia completo. Se nessun caso corrisponde, l'istruzione semplicemente non fa nulla. Aggiunga un case _ finale quando desidera garantire che venga sempre eseguito un ramo.
color = 'purple'
result = 'no match'
match color:
case 'red':
result = 'stop'
case 'green':
result = 'go'
print(result)Guardie sui dati destrutturati
Le guardie si combinano naturalmente con i pattern di sequenza e di mapping, consentendo di verificare i valori appena estratti.
data = [10, 20]
match data:
case [a, b] if a + b > 25:
print('sum is large')
case [a, b]:
print('sum is small')Verifica rapida
Che cosa succede quando un pattern corrisponde strutturalmente, ma la sua condizione di guardia è falsa?
Riepilogo
Ha imparato ad aggiungere condizioni e casi generali.
- Le guardie aggiungono un test
ifche può usare i nomi acquisiti. - Quando una guardia non è soddisfatta, si passa al caso successivo.
_corrisponde e scarta il valore; un nome lo acquisisce.- Aggiunga un
case _finale per garantire l'esecuzione di un ramo.
Domande Frequenti
La lezione «Guardie e caratteri jolly» è gratuita?
Sì — il testo completo di «Guardie e caratteri jolly» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.
Cosa imparerò in «Guardie e caratteri jolly»?
Aggiungere condizioni e casi generici Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Python Academy?
Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Guardie e caratteri jolly»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Python Academy?
Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Nozioni di base su match e case
- Confrontare sequenze e mapping
- Pattern di classe
- Guardie e caratteri jolly