Python Academy · Oppitunti

match- ja case-perusteet

Haarauta arvomallien perusteella

Oppitunti 1/413 vaihetta

match- ja case-perusteet on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Rakenteellinen hahmonsovitus

Python 3.10 esitteli rakenteellisen hahmonsovituksen match-lauseella. Se vertaa arvoa useisiin hahmoihin ja suorittaa ensimmäisen täsmäävän vaihtoehdon. Tämä on paljon tehokkaampaa kuin peräkkäiset if/elif-ehdot.

Perussyntaksi

Kirjoittakaa match-sanan jälkeen tutkittava arvo ja sen perään yksi tai useampi case-lohko. Ensimmäinen täsmäävä tapaus suoritetaan.

command = 'start'

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

# prints: Starting up

Literaalien sovittaminen

Yksinkertaisimpia hahmoja ovat literaaliarvot: luvut, merkkijonot, True, False ja None. Ne täsmäävät, kun tutkittava arvo on sama kuin literaali.

code = 404

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

Jokerimerkki _

Alaviiva _ on jokerihahmo, joka täsmää mihin tahansa. Sijoittakaa se viimeiseksi oletusarvoiseksi yleissovittimeksi, kuten else.

code = 418

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

Vaihtoehtojen yhdistäminen OR-operaattorilla

Käyttäkää |-operaattoria case-lohkossa, kun haluatte sovittaa jonkin useista hahmoista.

code = 301

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

Arvon sitominen

Pelkkä nimi hahmossa sitoo tutkittavan arvon kyseiseen muuttujaan. Käyttäkää sitä, kun sovitatte kaiken kattavasti mutta tarvitsette silti arvon.

value = 42

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

Järjestyksellä on merkitystä

Tapaukset testataan ylhäältä alaspäin, ja ensimmäinen täsmäävä tapaus voittaa. Liian aikaisin sijoitettu laaja sitova hahmo peittää alleen myöhemmät, tarkemmat tapaukset.

x = 5

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

Match ei palauta mitään

match on lause eikä lauseke, joten se ei palauta arvoa. Asettakaa muuttujalle arvo tapausten sisällä, jos tarvitsette tuloksen.

day = 6
label = ''

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

print(label)

None-arvon sovittaminen

Voitte sovittaa None-arvon suoraan. Tämä on selkeämpää kuin eksplisiittinen is None -tarkistus ehtoketjussa.

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

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

Käytännöllinen jakelija

Hahmonsovitus on parhaimmillaan komentojen jakelijana: se muuttaa pitkän if-ketjun selkeäksi tapausten taulukoksi.

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'))

True-, False- ja None-arvojen sovittaminen

Vakiot True, False ja None sovitetaan identiteetin, ei yhtäsuuruuden, perusteella. Siksi ne ovat luotettavia yksittäisiä arvoja, joiden perusteella voidaan haarautua.

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

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

Pikakertaus

Mitä jokerihahmo _ tekee match-lauseessa?

Kertaus

Opitte haarautumaan arvohahmojen perusteella.

  • match testaa tapaukset ylhäältä alaspäin, ja ensimmäinen täsmäävä tapaus voittaa.
  • Sovittakaa literaaleja, käyttäkää _-hahmoa yleissovittimena ja yhdistäkää vaihtoehtoja |-operaattorilla.
  • Pelkkä nimi sitoo arvon muuttujaan.
  • match on lause eikä lauseke.
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”match- ja case-perusteet” ilmainen?

Kyllä – oppitunnin ”match- ja case-perusteet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”match- ja case-perusteet”?

Haarauta arvomallien perusteella Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”match- ja case-perusteet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. match- ja case-perusteet
  2. Sekvenssien ja kuvausten täsmäytys
  3. Luokkamallit
  4. Vartijat ja jokerimerkit
← Takaisin: Python Academy