De Python Switch-verklaring

Introductie

De switch-instructie is een krachtig en handig hulpmiddel om de stroom van uw programma te controleren. Hiermee kunt u snel en eenvoudig meerdere codevertakkingen maken, afhankelijk van de waarde van een bepaalde variabele of expressie. Het wordt vaak gebruikt wanneer u verschillende logica moet uitvoeren, afhankelijk van de waarde van een bepaalde variabele, die meer dan 2 (maar een eindig aantal) waarden kan hebben.

In dit artikel zullen we onderzoeken hoe we de switch-instructie in Python kunnen gebruiken en de voordelen ervan ten opzichte van andere besturingsstructuren bespreken. Of u nu nieuw bent bij Python of een ervaren ontwikkelaar bent, de switch-instructie kan u helpen schonere, efficiรซntere code te schrijven.

Vรณรณr v3.10

Voordat de Python-switch-instructie native beschikbaar was in de taal, moesten programmeurs andere besturingsstructuren gebruiken om dezelfde functionaliteit te bereiken. Een veel voorkomende benadering was het gebruik van een reeks if-else-instructies, waarbij elke codetak werd geassocieerd met een andere waarde van de variabele die werd getest.

Beschouw bijvoorbeeld de volgende code:

value = "foo"

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

In deze code gebruiken we een if-else-instructie om te bepalen welke codetak moet worden uitgevoerd op basis van de waarde van de variabele value. Indien value gelijk is aan โ€œfooโ€, wordt de eerste codetak uitgevoerd. Als value gelijk is aan โ€œbarโ€, wordt de tweede codetak uitgevoerd. Anders wordt de code in het else blok zal worden uitgevoerd.

Hoewel deze aanpak werkt, kan deze snel onpraktisch worden naarmate het aantal mogelijke waarden voor de variabele toeneemt. Bovendien kan het de code moeilijk leesbaar en begrijpelijk maken.

Een andere benadering die kan worden gebruikt om een โ€‹โ€‹switch-achtige instructie in Python te maken, is het gebruik van een woordenboek. Bij deze benadering zijn de sleutels van het woordenboek de mogelijke waarden van de variabele die wordt getest, en zijn de waarden de overeenkomstige codetakken.

Beschouw bijvoorbeeld de volgende code:

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")()

In deze code hebben we een woordenboek gedefinieerd met de naam switch, waarbij sleutels de mogelijke waarden van de variabele vertegenwoordigen value. Voor elke sleutel hebben we een lambda-functie als waarde toegewezen, die de overeenkomstige codetak bevat. Om de juiste codetak uit te voeren, gebruiken we de get() methode van het woordenboek, waarmee we een standaardwaarde kunnen opgeven die moet worden gebruikt als de opgegeven sleutel niet in het woordenboek voorkomt.

Hoewel deze aanpak flexibeler en compacter is dan het gebruik van if-else-instructies, kan het nog steeds moeilijk zijn om te lezen en te begrijpen, vooral als de code in elke vertakking complex is. Bovendien vereist het het gebruik van lambda-functies, wat voor sommige programmeurs verwarrend kan zijn. We raden u af deze methode te gebruiken, tenzij u om een โ€‹โ€‹of andere reden de andere methoden in dit artikel niet kunt gebruiken.

Met de introductie van de Python switch-instructie in Python v3.10 hebben programmeurs nu een gemakkelijkere en intuรฏtievere manier om de stroom van hun programma's te besturen op basis van de waarde van een bepaalde variabele of expressie. In de volgende sectie zullen we onderzoeken hoe we een daadwerkelijke switch-instructie in Python kunnen gebruiken.

De match/case Verklaring (na v3.10)

Na Python v3.10 wordt de switch-instructie afgehandeld met behulp van de match trefwoord. Dit trefwoord wordt gebruikt om een โ€‹โ€‹expressie voor patroonmatching te maken, waarmee u de waarde van een bepaalde variabele of expressie kunt testen aan de hand van een reeks patronen. Als er een overeenkomst wordt gevonden, wordt de overeenkomstige codetak uitgevoerd.

Beschouw bijvoorbeeld de volgende code:

value = "foo"

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

Bekijk onze praktische, praktische gids voor het leren van Git, met best-practices, door de industrie geaccepteerde normen en bijgevoegd spiekbriefje. Stop met Googlen op Git-commando's en eigenlijk leren het!

In deze code gebruiken we de match trefwoord om een โ€‹โ€‹expressie voor patroonmatching te maken, die de waarde van de variabele test value tegen een reeks patronen. Als value gelijk is aan โ€œfooโ€, wordt de eerste codetak uitgevoerd. Als value gelijk is aan โ€œbarโ€, wordt de tweede codetak uitgevoerd. Anders wordt de code in het else-blok uitgevoerd.

doorval

Een van de belangrijkste verschillen tussen switch-instructies in Python en traditionele switch-instructies in andere talen is dat die van Python match verklaring ondersteunt geen doorval. Met andere woorden, zodra er een match is gevonden en de corresponderende codetak is uitgevoerd, wordt de match expressie eindigt en er is geen andere code in de match verklaring wordt uitgevoerd. In andere talen wordt dit meestal bereikt met behulp van de break trefwoord, dat hier niet nodig of ondersteund is.

Als u hetzelfde gedrag wilt bereiken als de fall-through in een traditionele switch-instructie, kunt u de | operator om meerdere cases te matchen. Met deze operator kunt u meerdere patronen in รฉรฉn patroon opgeven case, en elk van de patronen kan worden gekoppeld om de uitvoering van die vertakking te activeren.

Beschouw bijvoorbeeld de volgende code:

value = "y"

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

Hier, als de waarde van value is gelijk aan โ€œjaโ€ or โ€œyโ€, de eerste codetak wordt uitgevoerd. Dit komt overeen met het doorvalgedrag in een traditionele switch-instructie.

Standaardwaarden

Zoals je waarschijnlijk uit de bovenstaande voorbeelden hebt opgemerkt, wordt het โ€œstandaardโ€ geval afgehandeld met een onderstrepingsteken (_). Dit wordt beschouwd als het โ€œwildcardโ€ en komt overeen met alle waarden. Als een van de voorgaande gevallen overeenkomt met de waarde, wordt de standaardcodetak overgeslagen en niet uitgevoerd.

Conclusie

Zoals u kunt zien, biedt de Python match-instructie (ook wel 'switch' genoemd) een krachtige en handige manier om de stroom van uw programma te controleren. Of u nu nieuw bent bij Python of een ervaren ontwikkelaar bent, de switch-instructie kan u helpen schonere, efficiรซntere code te schrijven.

Tijdstempel:

Meer van Stapelmisbruik