Vartijat ja jokerimerkit
Lisää ehtoja ja kaikenkattavia tapauksia
Vartijat ja jokerimerkit on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/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.
Sovitusten tarkentaminen
Joskus rakenteellinen hahmo ei riitä, vaan tarvitsette lisäksi ehdon. Suojausehdot lisäävät if-testin tapaukseen, ja jokerimerkit tarjoavat joustavia yleissovittimia.
Suojausehdon lisääminen
Kirjoittakaa if <condition> hahmon jälkeen. Tapaus täsmää vain, kun hahmo sopii ja suojausehto on tosi.
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')Suojausehdot käyttävät sidottuja nimiä
Suojausehto voi viitata hahmon sitomiin muuttujiin. Tässä sidotun parin yhtäsuuruus tarkistetaan.
point = [3, 3]
match point:
case [x, y] if x == y:
print('on the diagonal')
case [x, y]:
print('off the diagonal')Jos suojausehto epäonnistuu
Jos rakenne täsmää mutta suojausehto on epätosi, sovittaminen jatkuu seuraavaan tapaukseen eikä pysähdy.
value = 5
match value:
case n if n > 100:
print('big')
case n:
print('fell through to here:', n)Suojausehdot luokkahao?mojen kanssa
Suojausehdot toimivat kaikentyyppisten hahmojen, myös luokkahao?mojen, kanssa ja mahdollistavat tarkat ehdot objektin attribuuteille.
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)))Jokerimerkin kertaus
Yksinäinen alaviiva _ täsmää mihin tahansa eikä sido mitään. Viimeisenä tapauksena se käsittelee kaiken, mikä ei täsmännyt aiemmin.
x = 'unexpected'
match x:
case 'a':
print('letter a')
case _:
print('catch-all')Sidonta vai jokerimerkki
Nimetty sidonta täsmää myös mihin tahansa, mutta säilyttää arvon, kun taas _ hylkää sen. Käyttäkää nimeä, kun tarvitsette arvon rungossa.
value = 42
match value:
case 0:
print('zero')
case other: # capture: keeps the value
print('value was', other)Jokerimerkit hahmojen sisällä
Alaviiva voi esiintyä suurempien hahmojen sisällä niiden osien ohittamiseksi, joista ette ole kiinnostuneita.
record = ('user', 42, 'ignore_me')
match record:
case ('user', user_id, _):
print('user id:', user_id)OR-operaattorin, suojausehtojen ja jokerimerkkien yhdistäminen
Nämä ominaisuudet toimivat yhdessä. OR-hahmo, sitä seuraava suojausehto ja lopuksi yleissovitin muodostavat ilmaisuvoimaisen luokittelijan.
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))Kattavuus
Toisin kuin jotkin muut kielet, Python ei vaadi hahmonsovitusta kattavaksi. Jos mikään tapaus ei täsmää, lause ei yksinkertaisesti tee mitään. Lisätkää lopuksi case _, kun haluatte varmistaa, että jokin haara suoritetaan aina.
color = 'purple'
result = 'no match'
match color:
case 'red':
result = 'stop'
case 'green':
result = 'go'
print(result)Suojausehdot puretulle datalle
Suojausehdot sopivat luontevasti yhteen sekvenssi- ja kuviomallien kanssa, joten voitte testata juuri poimimianne arvoja.
data = [10, 20]
match data:
case [a, b] if a + b > 25:
print('sum is large')
case [a, b]:
print('sum is small')Pikakertaus
Mitä tapahtuu, kun hahmo täsmää rakenteeltaan mutta sen suojausehto on epätosi?
Kertaus
Opitte lisäämään ehtoja ja kaiken kattavia tapauksia.
- Suojausehdot lisäävät
if-testin, joka voi käyttää sidottuja nimiä. - Epäonnistunut suojausehto siirtää käsittelyn seuraavaan tapaukseen.
_täsmää ja hylkää arvon, kun taas nimi sitoo sen.- Lisätkää viimeiseksi
case _, kun haluatte varmistetun haaran.
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 ”Vartijat ja jokerimerkit” ilmainen?
Kyllä – oppitunnin ”Vartijat ja jokerimerkit” 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 ”Vartijat ja jokerimerkit”?
Lisää ehtoja ja kaikenkattavia tapauksia 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 4/4.
Kuinka kauan ”Vartijat ja jokerimerkit”-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