match- ja case-perusteet
Haarauta arvomallien perusteella
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 upLiteraalien 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.
matchtestaa 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.
matchon lause eikä lauseke.
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
- match- ja case-perusteet
- Sekvenssien ja kuvausten täsmäytys
- Luokkamallit
- Vartijat ja jokerimerkit