Izjava Python Switch

Predstavitev

Izjava switch je zmogljivo in priročno orodje za nadzor poteka vašega programa. Omogoča vam hitro in preprosto ustvarjanje več vej kode, odvisno od vrednosti dane spremenljivke ali izraza. Običajno se uporablja, ko morate izvesti drugačno logiko glede na vrednost dane spremenljivke, ki ima lahko več kot 2 (vendar končno število) vrednosti.

V tem članku bomo raziskali, kako uporabiti stavek switch v Pythonu in razpravljali o njegovih prednostih pred drugimi kontrolnimi strukturami. Ne glede na to, ali ste začetnik v Pythonu ali ste izkušen razvijalec, vam lahko stavek switch pomaga napisati čistejšo in učinkovitejšo kodo.

Pred v3.10

Preden je bil stavek Python switch izvorno na voljo v jeziku, so morali programerji uporabiti druge nadzorne strukture, da so dosegli enako funkcionalnost. Eden pogostih pristopov je bila uporaba niza izjav if-else, pri čemer je bila vsaka veja kode povezana z drugačno vrednostjo spremenljivke, ki se testira.

Na primer, razmislite o naslednji kodi:

value = "foo"

if value == "foo":
    print("foo was selected")
elif value == "bar":
    print("bar was selected")
else:
    print("Nothing valid was selected")

V tej kodi uporabljamo stavek if-else, da določimo, katero vejo kode naj izvedemo glede na vrednost spremenljivke value. Če value je enako "foo", bo izvedena prva veja kode. če value je enako "bar", bo izvedena druga veja kode. V nasprotnem primeru koda v else blok bo izveden.

Čeprav ta pristop deluje, lahko hitro postane okoren, ko se število možnih vrednosti za spremenljivko poveča. Poleg tega lahko kodo oteži branje in razumevanje.

Drug pristop, ki ga je mogoče uporabiti za ustvarjanje stikala podobnega stavka v Pythonu, je uporaba slovarja. Pri tem pristopu so ključi slovarja možne vrednosti spremenljivke, ki se testira, vrednosti pa so ustrezne veje kode.

Na primer, razmislite o naslednji kodi:

value = "foo"

switch = {
    "foo": lambda: print("foo was selected"),
    "bar": lambda: print("bar was selected"),
    "default": lambda: print("Nothing valid was selected"),
}

switch.get(value, "default")()

V tej kodi smo definirali slovar, imenovan switch, s ključi, ki predstavljajo možne vrednosti spremenljivke value. Vsakemu ključu smo kot vrednost dodelili lambda funkcijo, ki vsebuje ustrezno vejo kode. Za izvedbo ustrezne veje kode uporabimo get() metoda slovarja, ki nam omogoča, da določimo privzeto vrednost za uporabo, če dani ključ ne obstaja v slovarju.

Čeprav je ta pristop bolj prilagodljiv in kompakten kot uporaba stavkov if-else, ga je še vedno težko brati in razumeti, zlasti če je koda v vsaki veji zapletena. Poleg tega zahteva uporabo lambda funkcij, kar lahko nekatere programerje zmede. Ne priporočamo uporabe te metode, razen če iz nekega razloga ne morete uporabiti drugih metod v tem članku.

Z uvedbo stavka Python switch v Python v3.10 imajo programerji zdaj bolj priročen in intuitiven način za nadzor poteka svojih programov na podlagi vrednosti dane spremenljivke ali izraza. V naslednjem razdelku bomo raziskali, kako uporabiti dejanski stavek switch v Pythonu.

O match/case Izjava (po v3.10)

Po Pythonu v3.10 se stavek switch obravnava z uporabo match ključna beseda. Ta ključna beseda se uporablja za ustvarjanje izraza za ujemanje vzorcev, ki vam omogoča, da preizkusite vrednost dane spremenljivke ali izraza glede na vrsto vzorcev. Če se najde ujemanje, se izvede ustrezna veja kode.

Na primer, razmislite o naslednji kodi:

value = "foo"

match value:
    case "foo":
        print("foo was selected")
    case "bar":
        print("bar was selected")
    case _:
        print("Nothing valid was selected")

Oglejte si naš praktični, praktični vodnik za učenje Gita z najboljšimi praksami, standardi, sprejetimi v panogi, in priloženo goljufijo. Nehajte Googlati ukaze Git in pravzaprav naučiti it!

V tej kodi uporabljamo match ključno besedo za ustvarjanje izraza za ujemanje vzorcev, ki preizkusi vrednost spremenljivke value proti nizu vzorcev. če value je enako "foo", bo izvedena prva veja kode. če value je enako "bar", bo izvedena druga veja kode. V nasprotnem primeru se bo koda v bloku else izvršila.

Padejo skozi

Ena od ključnih razlik med stavki switch v Pythonu in tradicionalnimi stavki switch v drugih jezikih je, da Python match izjava ne podpira padca. Z drugimi besedami, ko je ujemanje najdeno in je izvedena ustrezna veja kode, se match izraz konča in nobena druga koda v match stavek se izvede. V drugih jezikih se to običajno doseže z uporabo break ključna beseda, ki tukaj ni potrebna ali podprta.

Če želite doseči enako vedenje kot padci v tradicionalnem stavku switch, lahko uporabite | operator za ujemanje več primerov. Ta operator vam omogoča, da določite več vzorcev v enem case, kateri koli od vzorcev pa se lahko ujema, da sproži izvedbo te veje.

Na primer, razmislite o naslednji kodi:

value = "y"

match value:
    case "yes" | "y":
        print("The user confirmed")
    case _:
        print("The user denied")

Tukaj, če je vrednost value je enako "da" or »y«, bo izvedena prva veja kode. To je enakovredno padajočemu obnašanju v tradicionalnem stavku switch.

Neplačila

Kot ste verjetno opazili iz zgornjih primerov, se "privzeta" velikost črk obravnava s podčrtajem (_). To velja za »nadomestni znak« in se ujema z vsemi vrednostmi. Če se eden od prejšnjih primerov ujema z vrednostjo, se privzeta veja kode preskoči in ne izvede.

zaključek

Kot lahko vidite, stavek Python match (aka »switch«) ponuja močan in priročen način za nadzor poteka vašega programa. Ne glede na to, ali ste začetnik v Pythonu ali ste izkušen razvijalec, vam lahko stavek switch pomaga napisati čistejšo in učinkovitejšo kodo.

Časovni žig:

Več od Stackabuse