0Pricing
Python Academy · Lezione

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 if che 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

  1. Nozioni di base su match e case
  2. Confrontare sequenze e mapping
  3. Pattern di classe
  4. Guardie e caratteri jolly
← Torna a Python Academy