Python Academy · leksjon

Grunnleggende om match og case

Forgren programflyten basert på verdimønstre

Leksjon 1 av 413 trinn

Grunnleggende om match og case er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Strukturell mønstermatching

Python 3.10 introduserte strukturell mønstermatching med match-setningen. Den sammenligner en verdi med en serie mønstre og kjører det første som samsvarer, noe som er langt kraftigere enn en kjede av if/elif.

Grunnleggende syntaks

Skriv match etterfulgt av uttrykket, og deretter én eller flere case-blokker. Det første tilfellet som samsvarer, kjøres.

command = 'start'

match command:
    case 'start':
        print('Starting up')
    case 'stop':
        print('Shutting down')

# prints: Starting up

Matching av litteraler

De enkleste mønstrene er litterale verdier: tall, strenger, True, False og None. De samsvarer når uttrykket er likt litteralen.

code = 404

match code:
    case 200:
        print('OK')
    case 404:
        print('Not Found')
    case 500:
        print('Server Error')

Jokertegnet _

Understreken _ er et jokertegnmønster som samsvarer med hva som helst. Plasser det sist som et standardtilfelle som fanger opp alt, omtrent som else.

code = 418

match code:
    case 200:
        print('OK')
    case _:
        print('Unknown status')

Kombinere med OR

Bruk operatoren | i et case for å samsvare med ett av flere mønstre.

code = 301

match code:
    case 200 | 201 | 204:
        print('Success')
    case 301 | 302:
        print('Redirect')
    case _:
        print('Other')

Fange verdien

Et frittstående navn i et mønster fanger uttrykket i den variabelen. Bruk dette når De har fanget opp alt, men fortsatt trenger verdien.

value = 42

match value:
    case 0:
        print('zero')
    case other:
        print('got', other)

Rekkefølgen er viktig

Tilfellene testes ovenfra og ned, og det første treffet vinner. Et bredt fangstmønster som plasseres for tidlig, vil skjule senere og mer spesifikke tilfeller.

x = 5

match x:
    case n:           # matches everything first!
        print('caught by capture')
    case 5:
        print('this never runs')

match returnerer ingenting

match er en setning, ikke et uttrykk, så den returnerer ingen verdi. Tilordne en variabel inne i tilfellene hvis De trenger et resultat.

day = 6
label = ''

match day:
    case 0 | 6:
        label = 'weekend'
    case _:
        label = 'weekday'

print(label)

Matching av None

De kan matche None direkte. Dette er ryddigere enn en eksplisitt is None-kontroll i en kjede.

def describe(value):
    match value:
        case None:
            return 'nothing'
        case _:
            return 'something: ' + str(value)

print(describe(None))
print(describe(7))

En praktisk kommandofordeler

Mønstermatching egner seg svært godt som kommandofordeler, og gjør en lang if-kjede om til en tydelig tabell med tilfeller.

def handle(cmd):
    match cmd:
        case 'help':
            return 'Showing help'
        case 'quit' | 'exit':
            return 'Goodbye'
        case _:
            return 'Unknown command'

print(handle('exit'))
print(handle('foo'))

Matching av True, False og None

Konstantene True, False og None matches etter identitet, ikke likhet. Det gjør dem til pålitelige singletoner å forgreine på.

def report(flag):
    match flag:
        case True:
            return 'enabled'
        case False:
            return 'disabled'
        case None:
            return 'unset'

print(report(True))
print(report(None))

Kort kontroll

Hva gjør jokertegnmønsteret _ i en match-setning?

Oppsummering

De har lært å forgreine på verdimønstre.

  • match tester tilfellene ovenfra og ned; det første treffet vinner.
  • Match litteraler, bruk _ som jokertegn, og kombiner med |.
  • Et frittstående navn fanger verdien.
  • match er en setning, ikke et uttrykk.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Grunnleggende om match og case» gratis?

Ja – hele teksten i «Grunnleggende om match og case» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Grunnleggende om match og case»?

Forgren programflyten basert på verdimønstre Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Grunnleggende om match og case»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om match og case
  2. Samsvar med sekvenser og mappinger
  3. Klassemønstre
  4. Vilkår og jokertegn
← Tilbake til Python Academy