Python tingimuslaused: if-elif-else, switch alternatiivid ja match-lause selgitus

1. Pythoni tingimuslausete põhialused

Pythonit kasutatakse laialdaselt kui lihtsat ja võimsat programmeerimiskeelt, kuid eriti oluline on tingimuslausete kasutamine, et kontrollida programmi käitumist. Selles artiklis selgitame Pythoni tingimuslausete põhialuseid ning switch-lausete alternatiive.

Mis on Pythoni tingimuslause?

Pythoni tingimuslausete abil juhitakse programmi voogu vastavalt kindlatele tingimustele. Näiteks saab sõltuvalt muutuja väärtusest käivitada erineva koodi. Pythonis tehakse seda if-lausete abil.

if-elif-else struktuuri põhialused

Pythoni tingimuslause kirjutatakse järgmiselt, kasutades if-lausete kombinatsiooni:

x = 10
if x > 5:
    print("x on suurem kui 5")
elif x == 5:
    print("x on võrdne 5-ga")
else:
    print("x on väiksem kui 5")

Selles koodis kuvatakse “suurem kui 5”, kui x on suurem kui 5. Kui mitte, hinnatakse järgmist tingimust. Tingimuste arvu suurenedes lisatakse elif-lausete abil uusi tingimusi.

Miks Pythonis ei ole switch-lauset

Paljudes programmeerimiskeeltes on olemas switch-lause, mis võimaldab lühidalt kontrollida, kas muutuja väärtus vastab ühele mitmest variandist. Pythonis aga switch-lausete tuge pole. Põhjus on selles, et Python soodustab „lihtsat ja selget“ koodi. Kuna sama saab saavutada if-elif-else-lausete abil, polnud vajadust lisada eraldi switch-struktuuri.

2. Miks Pythonis puudub switch-lause

Pythoni looja eesmärk oli hoida keel võimalikult lihtne ja arusaadav, vältides liigseid keerulisi süntakse. Kuigi switch-lause on mugav mitme haru kontrollimisel, leidsid arendajad, et seda saab hõlpsasti asendada if-elif-else-lausete abil.

Pythoni filosoofia: lihtne ja selge kood

Pythoni filosoofia rõhutab lihtsust. Selleks on välditud liigset süntaksit ja toetutud rohkem if-elif-else-lausetele, mis võimaldavad paindlikult tingimuslauseid realiseerida.

Tingimuslause if-elif-else abil

Pythonis saab if-elif-else-lausete abil saavutada sama funktsionaalsuse nagu switch-lause. Näiteks nädalapäevade kontrollimiseks:

day = "Teisipäev"

if day == "Esmaspäev":
    print("Täna on esmaspäev")
elif day == "Teisipäev":
    print("Täna on teisipäev")
else:
    print("Kehtetu päev")

Nii saab lihtsalt hallata mitut tingimust, kuid tingimuste arv kasvades muutub kood pikemaks. Sellisel juhul tasub kaaluda tõhusamaid alternatiive.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. Switch-lausete alternatiivid Pythonis

Kuna Pythonis puudub switch-lause, tuleb kasutada alternatiivseid meetodeid tingimuslausete realiseerimiseks. Järgnevalt toome välja mõned levinud meetodid.

Sõnastiku (dict) kasutamine

Üks levinud viis switch-lause asendamiseks on kasutada Pythoni sõnastikku (dict). Sõnastik koosneb võtme-väärtuse paaridest ja sobib hästi erinevate toimingute käivitamiseks tingimuste alusel.

def case_one():
    return "See on juhtum 1"

def case_two():
    return "See on juhtum 2"

switch_dict = {
    1: case_one,
    2: case_two
}

x = 1
print(switch_dict.get(x, lambda: "Vigane juhtum")())

Sõnastiku abil saab vastavalt võtmele käivitada funktsiooni, muutes koodi lühemaks ja loetavamaks kui if-elif-else.

Sõnastiku eelised ja piirangud

Sõnastik muudab koodi loetavamaks ja võimaldab tingimusi efektiivselt hallata. Kuid see sobib pigem lihtsate võtme-väärtuse seoste jaoks. Kui tingimused on keerukad, on parem kasutada if-elif-else-lausete kombinatsiooni.

4. Pythoni 3.10+ match-lause kui alternatiiv

Alates Python 3.10 versioonist on lisatud match-lause, mis pakub sarnast funktsionaalsust nagu switch. See võimaldab kasutada mustripõhist vastavust (pattern matching), et lihtsustada tingimuslausete kirjutamist.

match-lause põhistruktuur

match-lausete abil saab võrrelda väärtusi ja täita esimese sobiva haru:

def get_grade(score):
    match score:
        case 90 <= score <= 100:
            return "A"
        case 80 <= score < 90:
            return "B"
        case _:
            return "F"

grade = get_grade(85)
print(grade)

See kood tagastab vastava hinde score väärtuse põhjal. match-lausete abil saab kirjutada lühemaid ja selgemaid tingimusstruktuure.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Millist meetodit valida?

Kõigil mainitud meetoditel – if-elif-else, sõnastik ning match – on oma eelised. Allpool toome juhised, kuidas valida sobiv lahendus.

Kui tingimusi on vähe

Väheste tingimuste korral on if-elif-else kõige lihtsam ja tõhusam lahendus. Sobib eriti väikeste skriptide jaoks.

Kui tingimusi on palju

Kui tingimusi on palju või on vaja funktsioonide väljakutset, on parem kasutada sõnastikku. See parandab koodi hallatavust ja loetavust.

Kui on vaja keerukaid tingimusi või mustrivastet

Kui kasutad Python 3.10 või uuemat, on match-lause parim valik keerukate tingimuste ja mustrite kontrollimiseks.

年収訴求