Python, in tegenstelling tot sommige andere programmeertalen, had tot versie 3.10 geen traditionele switch case-instructie. In deze tutorial verkennen we hoe het equivalent van de switch case in Python werkt en hoe het kan worden geïmplementeerd met behulp van Python’s structurele patroonmatching-functie.
Begrip van Traditionele Switch Case Statements
Voor Python 3.10 moesten Python-ontwikkelaars meerdere if-elif-else-instructies of woordenboeken gebruiken om de functionaliteit van switch case te simuleren. Hier is een basisvoorbeeld met if-elif-else:
day = input("Enter the day of the week: ").capitalize() if day == "Saturday" or day == "Sunday": print(f"{day} is a weekend.") elif day in ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]: print(f"{day} is a weekday.") else: print("That's not a valid day of the week.")
Saturday is a weekend.
Introductie van Match en Case in Python 3.10
Met Python 3.10 werden de match-instructie en case-sleutelwoorden geïntroduceerd, die een elegantere oplossing bieden, vergelijkbaar met traditionele switch case-instructies in andere talen.
Basis Syntax Begrijpen
Laten we een scenario overwegen waarin we de dagen van de week willen categoriseren in weekend- of weekdagcategorieën, en ook een specifieke dag willen identificeren. Hier is hoe we de match-instructie kunnen gebruiken:
day = input("Enter the day of the week: ").capitalize() match day: case "Saturday" | "Sunday": print(f"{day} is a weekend.") case "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday": print(f"{day} is a weekday.") case _: print("That's not a valid day of the week.")
Monday is a weekday.
- Gebruikersinvoer en
capitalize()
Methode: We beginnen met het nemen van de gebruikersinvoer voor de dag van de week en gebruiken decapitalize()
methode om het correct te formatteren (eerste letter hoofdletter, overige kleine letters). - Gebruik van de
match
Instructie: We gebruiken vervolgensmatch
om de dagvariabele te evalueren. - Patroonovereenkomst met
case
:- De eerste
case
controleert of de invoer “Saturday” of “Sunday” is. Het symbool “|”, ook bekend als de bitwise OR-operator, wordt gebruikt om overeen te komen met één van meerdere patronen. Als de invoer een van deze is, drukt het af dat de dag een weekenddag is. - De tweede case dekt alle werkdagen door ze allemaal te controleren. Als de invoer overeenkomt met een van de werkdagen, drukt het af dat de dag een werkdag is.
- De eerste
- De Fallback Case (
_
): De laatste case fungeert als een standaard (`else` statement), die elke invoer vangt die niet overeenkomt met de bekende dagen, en geeft een ongeldige invoer aan. - Geen break-instructies: Merk op dat we geen
break
nodig hebben na elke case. Python verlaat automatisch het match-statement na een succesvolle match.
De syntax van match-case is meer leesbaar en beknopt vergeleken met een reeks van if-elif-else-instructies.
Geavanceerde gebruiksscenario’s van Match en Case in Python
Data science-toepassingen
Python’s match-case instructie kan zeer nuttig zijn bij gegevensvoorbereidingsopdrachten in data science. Voorbewerking omvat vaak het categoriseren van gegevens in verschillende groepen op basis van specifieke criteria.
Vooral bijvoorbeeld, in een gegevensset van dieren, zou je ze kunnen categoriseren op basis van hun klasse, zoals zoogdieren, vogels, reptielen, enzovoort. Hier is een vereenvoudigd voorbeeld:
animal = "Eagle" match animal: case "Eagle" | "Parrot": print("Bird") case "Lion" | "Tiger": print("Mammal") case "Python" | "Crocodile": print("Reptile") case _: print("Unknown Class")
Bird
Deze aanpak vereenvoudigt complexe if-else-logica en maakt de code meer leesbaar en onderhoudsklaar, vooral bij het werken met grote gegevenssets met meerdere categorieën.
Machine learning scenario’s
In machine learning is het hanteren van verschillende typen gegevensinput belangrijk. De match-casestructuur kan worden gebruikt voor feature extraction of modelinferentie. Bijvoorbeeld, in een machine learning-model dat weersomstandigheden voorspelt, kan match-case worden gebruikt om temperatuurbereiken te categoriseren in ‘Koud’, ‘Warm’, ‘Heet’, die vervolgens als inputfeatures voor het model kunnen worden gebruikt.
Python Switch Case algemene valkuilen en beste practices
Debugging tips
Een veel voorkomende fout bij het gebruik van match-case in Python is het vergeten van het opnemen van de underscore (_
) voor het standaardgeval, vergelijkbaar met ‘else’ in traditionele if-else-instructies. Dit kan tot onverwachte gedrag leiden als geen van de specifieke gevallen overeenkomt. Neem altijd een standaardgeval op te behandelen onverwachte of diverse waarden.
Performance overwegingen
Hoewel de match-case-uitdrukking een krachtige tool is, moet zijn invloed op de prestaties van Python-code, vooral in grote schaal toepassingen, worden overwogen. In scenario’s met veel gevallen of complexe patronenmatchen kan de prestatie potentieel worden beïnvloed. Het profileren en testen van uw code voor prestaties in echte-wereld scenario’s is cruciaal om te verstanden en eventuele prestatieproblemen aan te pakken.
Python Match-Case Tegenover Traditionele Switch-Case
Comparatieve analyse
Pythons match-case verschilt significant van traditionele switch-case-uitdrukkingen die in talen als Java of C++ voorkomen. Bijvoorbeeld in Java is de switch-uitdrukking beperkt tot het matchen van slechts scalair gegeven (zoals gehele getallen en enumtypen), terwijl Pythons match-case veel flexibeler patronenmatchentoestel biedt, wat complexe gegevenssoorten zoals sequences en klassevoorbeelden mogelijk maakt. Dit maakt Pythons implementatie krachtiger maar vereist ook een diepere verstand van patronenmatchen-concepten.
Overstap-handleiding
Voor programmeurs die bekend zijn met traditionele switch-case-uitdrukkingen in talen als C++ of Java, is het overstappen naar Pythons match-case een verandering in denken vereist van simpele waardenmatchen naar patronenmatchen.
Het is belangrijk te begrijpen dat Pythons match-case meer is dan een switch-case; het is een veelzijdige tool voor het ontmantelen van gegevenssoorten en het uit trekken van informatie uit complexe structuren. Praktiseren met verschillende gegevenssoorten en patronen is de sleutel tot het beheersen van zijn gebruik.
Conclusie
Python heeft in versie 3.10 de match en case-zinnen geintroduceerd, wat een lang verwachte feature biedt voor ontwikkelaars die gefamiliariseerd zijn met switch case-zinnen in andere talen. Het biedt een schone en concise manier om meerdere voorwaarden af te handelen, waardoor de code leesbaarder en onderhoudsbaarder wordt.
U kunt meer lezen over Python-functies in ons volledige handleiding en deze en andere concepten verkennen in ons Intermediate Python-cursus.
Source:
https://www.datacamp.com/tutorial/python-switch-case