Wie implementiert man Switch-Case-Funktionen in Python? [2022]

Veröffentlicht: 2021-01-08

Inhaltsverzeichnis

Einführung

Haben Sie sich jemals gefragt, ob es eine Alternative gibt, diese komplexen If-else-Anweisungen in Python zu schreiben? Wenn Sie nicht möchten, dass mehrere 'If'-Anweisungen Ihren Code überladen, sollten Sie die Switch case-Anweisung verwenden, die eine sauberere und schnellere Möglichkeit bietet, den Kontrollfluss in Ihrem Code zu implementieren. Im Gegensatz zu C++, Java, Ruby und anderen Programmiersprachen bietet Python keine switch case-Anweisung, aber es bietet einige Problemumgehungen, damit diese Anweisung funktioniert.

Mit Python können Sie beispielsweise Ihre Code-Snippets erstellen, die wie Python Switch-Case - Anweisungen in den anderen Programmiersprachen funktionieren. Sie werden später in diesem Blog mehr darüber erfahren, wie Sie Switch-Case-Anweisungen implementieren können. Wenn Sie mehr über Python erfahren möchten, sehen Sie sich unsere Data-Science-Kurse an.

Was ist eine Switch-Anweisung in Python?

Im Allgemeinen ist der Schalter ein Kontrollmechanismus, der den in einer Variablen gespeicherten Wert testet und die entsprechenden Case-Anweisungen ausführt. Die switch case-Anweisung führt eine Ablaufsteuerung in Ihr Programm ein und stellt sicher, dass Ihr Code nicht durch mehrere „if“-Anweisungen überladen wird.

Daher sieht Ihr Code für die Betrachter akribisch und transparent aus. Es ist eine wunderbare Programmierfunktion, die Programmierer verwenden, um den Kontrollfluss in ihrem Code zu implementieren. Die switch case-Anweisung vergleicht die in den case-Anweisungen angegebenen Werte mit Variablen in Ihrem Code.

So implementieren Sie die Python Switch Case-Anweisung

Wenn Sie schon immer in Sprachen wie C++ oder Java codiert haben, finden Sie es vielleicht seltsam, dass Python keine switch case-Anweisung hat. Stattdessen bietet Python zahlreiche Problemumgehungen wie ein Wörterbuch, Python-Klassen oder Python-Lambda-Funktionen, um switch-case-Anweisungen zu implementieren.

Wenn Sie den genauen Grund für das Fehlen einer switch case-Anweisung in Python wissen möchten, sollten Sie PEP 3103 überprüfen .

Bevor wir uns eingehend mit diesen Alternativen befassen, wollen wir zunächst sehen, wie eine switch case-Funktion normalerweise in anderen Programmiersprachen funktioniert.

Im folgenden Beispiel haben wir die Programmiersprache C verwendet

Schalter (MonatOfYear) {

Fall 1:

printf(“%s”, Januar);

brechen;

Fall 2:

printf(“%s”, Februar);

brechen;

Fall 3:

printf(“%s”, März);

brechen;

Fall 4:

printf(“%s”, April);

brechen;

Fall 5:

printf(“%s”, Mai);

brechen;

Fall 6:

printf(“%s”, Juni);

brechen;

Fall 7:

printf(“%s”, Juli);

brechen;

Fall 8:

printf(“%s”, August);

brechen;

Fall 9:

printf(“%s”, September);

brechen;

Fall 10:

printf(“%s”, Oktober);

brechen;

Fall 11:

printf(“%s”, November);

brechen;

Fall 12:

printf(“%s”, Dezember);

brechen;

Ursprünglich:

printf("Falscher Monat");

brechen;

}

Lassen Sie uns nun weiter auf Alternativen zu Python-Switch-Case- Funktionen eingehen und anhand von Beispielen verstehen, wie diese Alternativen funktionieren.

Lesen Sie: Karrieremöglichkeiten in Python: Alles, was Sie wissen müssen

Wörterbuchzuordnung verwenden

Wenn Sie mit anderen Programmiersprachen vertraut sind, müssen Sie wissen, dass das Wörterbuch Schlüssel-Wert-Paare verwendet, um eine Gruppe von Objekten im Speicher zu speichern. Wenn Sie ein Wörterbuch als Alternative zu switch-case-Anweisungen verwenden, funktionieren Schlüssel des Schlüssel-Wert-Paares als Case.

Das folgende Beispiel zeigt die Implementierung der switch case-Anweisung mithilfe eines Wörterbuchs. Hier definieren wir eine Funktion month(), um zu drucken, welcher Monat ein Monat des Jahres ist.

Beginnen Sie zunächst mit der Erstellung von Case-Anweisungen und schreiben Sie einzelne Funktionen für jeden Fall. Stellen Sie sicher, dass Sie eine Funktion schreiben, die den Standardfall behandelt.

def Januar():

Rückgabe „Januar“

def Februar():

Rückkehr „Februar“

def März():

Rückkehr „Marsch“

def April():

Rückkehr „April“

def kann():

Rückgabe „kann“

def Juni():

Rückgabe „Juni“

def juli():

Rückkehr „Juli“

def august():

Rückgabe „August“

def September():

Rückgabe „September“

def oktober():

Rückkehr „Oktober“

def November():

Rückkehr „November“

def Dezember():

Rückgabe „Dezember“

def default():

Rückgabe „Falscher Monat“

Erstellen Sie als Nächstes ein Dictionary-Objekt in Python und speichern Sie alle Funktionen, die Sie in Ihrem Programm definiert haben.

Umschalter = {

0: 'Januar',

1: 'Februar',

2: 'Marsch',

3: 'April',

4: 'kann',

5: 'juni',

6: 'Juli',

7: 'August',

8: 'september',

9: 'oktober',

10: 'November',

11: 'dezember'

}

Erstellen Sie zuletzt eine Switch-Funktion in Ihrem Programm, die Integer als Eingabe akzeptieren soll, eine Wörterbuchsuche durchführt und die entsprechenden Funktionen aufruft.

def Monat(MonatOfYear):

return switcher.get(monthOfYear, default)()

Der vollständige Code sieht so aus

def Januar():

Rückgabe „Januar“

def Februar():

Rückkehr „Februar“

def März():

Rückkehr „Marsch“

def April():

Rückkehr „April“

def kann():

Rückgabe „kann“

def Juni():

Rückgabe „Juni“

def juli():

Rückkehr „Juli“

def august():

Rückgabe „August“

def September():

Rückgabe „September“

def oktober():

Rückkehr „Oktober“

def November():

Rückkehr „November“

def Dezember():

Rückgabe „Dezember“

def default():

Rückgabe „Falscher Monat“

Umschalter = {

0: 'Januar',

1: 'Februar',

2: 'Marsch',

3: 'April',

4: 'kann',

5: 'juni',

6: 'Juli',

7: 'August',

8: 'september',

9: 'oktober',

10: 'November',

11: 'dezember'

}

def Monat(MonatOfYear):

return switcher.get(monthOfYear, default)()

Drucken (Schalter (1))

Drucken (Schalter (0))

Der obige Code gibt die folgende Ausgabe aus

Februar

Januar

Lesen Sie auch: 42 spannende Ideen und Themen für Python-Projekte für Anfänger

Verwendung von Python-Klassen

Sie können auch Python-Klassen als Alternative zur Implementierung von switch-case-Anweisungen verwenden. Eine Klasse ist ein Objektkonstruktor mit Eigenschaften und Methoden. Lassen Sie uns dies mit Hilfe des gleichen obigen Beispiels weiter verstehen. Hier definieren wir eine Switch-Methode innerhalb einer Python-Switch-Klasse.

Beispiel

Zuerst definieren wir eine Switch-Methode innerhalb einer Python-Switch-Klasse, die einen Monat des Jahres als Argument akzeptiert und das Ergebnis in einen String umwandelt.

Klasse PythonSwitch:

def Monat (selbst, Monat des Jahres):

default = „Falscher Monat“

return getattr(self, 'case_' + str(monthOf Year), lambda: default)()

Hinweis: Im obigen Beispiel haben wir zwei Dinge verwendet: das Schlüsselwort Lambda und die Methode getattr().

  • Wir verwenden das Lambda-Schlüsselwort, um eine anonyme Funktion in Python zu definieren. Das Lambda-Schlüsselwort ruft die Standardfunktion auf, wenn ein Benutzer ungültige Eingaben macht.
  • Die Methode getattr() wird verwendet, um eine Funktion in Python aufzurufen.

Erstellen Sie nun für jeden Fall individuelle Funktionen.

def Januar (selbst):

Rückgabe „Januar“

def Februar (selbst):

Rückkehr „Februar“

def Marsch(selbst):

Rückkehr „März“

def April (selbst):

Rückkehr „April“

def kann (selbst):

Rückkehr „Mai“

def Juni (selbst):

Rückgabe „Juni“

def juli (selbst):

Rückkehr „Juli“

def august(selbst):

Rückgabe „August“

def september (selbst):

Rückgabe „September“

def oktober(selbst):

Rückkehr „Oktober“

def november(selbst):

Rückkehr „November“

def Dezember (selbst):

Rückgabe „Dezember“

Der vollständige Code sieht so aus

Klasse PythonSwitch:

def Monat (selbst, Monat des Jahres):

default = „Falscher Monat“

return getattr(self, 'case_' + str(monthOf Year), lambda: default)()

def Januar (selbst):

Rückgabe „Januar“

def Februar (selbst):

Rückkehr „Februar“

def Marsch(selbst):

Rückkehr „März“

def April (selbst):

Rückkehr „April“

def kann (selbst):

Rückkehr „Mai“

def Juni (selbst):

Rückgabe „Juni“

def juli (selbst):

Rückkehr „Juli“

def august(selbst):

Rückgabe „August“

def september (selbst):

Rückgabe „September“

def oktober(selbst):

Rückkehr „Oktober“

def november(selbst):

Rückkehr „November“

def Dezember (selbst):

Rückgabe „Dezember“

my_switch = PythonSwitch()

print (my_switch.month(1))

print (my_switch.month(10))

Der obige Code gibt die folgende Ausgabe aus

Januar

Oktober

Schauen Sie sich an: Python-Entwicklergehalt in Indien

Fazit

In diesem Blog haben Sie etwas über switch-case-Anweisungen gelernt, welche Alternativen es für switch-case-Anweisungen gibt und wie man sie verwendet. Wie oben erklärt, hat Python keine eingebaute Switch-Case-Funktion, aber Sie können diese Alternativen immer verwenden, um Ihren Code ordentlich und sauber aussehen zu lassen und eine bessere Leistung zu erzielen.

Wenn Sie neugierig sind, etwas über Data Science zu lernen, schauen Sie sich das Executive PG Program in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte, praktische Workshops, Mentoring mit Branchenexperten, 1 -on-1 mit Branchenmentoren, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.

Unterscheiden Sie zwischen einem gewöhnlichen Wörterbuch und einem Python-Wörterbuch.

Python Dictionary oder „Dict“ ist eine eingebaute Datenstruktur von Python, die zum Speichern einer ungeordneten Sammlung von Elementen verwendet wird. Im Gegensatz zu anderen Python-Datenstrukturen, die einzelne Werte speichern, speichert die Dictionary-Datenstruktur Schlüssel-Wert-Paare, bei denen jeder Schlüssel eindeutig ist. Es merkt sich nicht die Einfügungsreihenfolge von Schlüssel-Wert-Paaren und iteriert durch die Schlüssel. Andererseits verfolgt ein Ordered Dictionary oder OrderedDict die Einfügereihenfolge von Schlüssel-Wert-Paaren. Aufgrund seiner doppelt verknüpften Listenimplementierung verbraucht es auch mehr Speicher als ein normales Wörterbuch in Python. Wenn Sie denselben Schlüssel löschen und erneut einfügen, wird er an seiner ursprünglichen Position eingefügt, da sich ein OrderedDict an die Einfügungsreihenfolge erinnert.

Welche Operationen von namedtuple machen es zu einer bequemen Option für Switch-Fälle?

Das namedtuple in Python führt verschiedene Operationen aus. Im Folgenden finden Sie eine Liste mit einigen der häufigsten Operationen, die vom namedtuple ausgeführt werden. Auf die Elemente in einem benannten Tupel kann im Gegensatz zu einem Wörterbuch über ihre Indizes zugegriffen werden. Der alternative Zugriff auf die Elemente erfolgt über ihren Schlüsselnamen. Die Funktion make() gibt ein Namedtuple zurück. Die Funktion _asadict() gibt ein geordnetes Wörterbuch zurück, das aus den zugeordneten Werten erstellt wird. Die Funktion _replace() nimmt einen Schlüsselnamen als Argument und ändert die ihm zugeordneten Werte. Die Funktion _fileds() gibt alle Schlüsselnamen des angegebenen namedtuple zurück.

Wann bevorzugen wir Listen zum Speichern von Daten?

Die Python-Liste gilt als die beste Datenstruktur zum Speichern der Daten in den folgenden Szenarien: Eine Liste kann verwendet werden, um verschiedene Werte mit unterschiedlichen Datentypen zu speichern, und es kann nur über ihre jeweiligen Indizes darauf zugegriffen werden. Wenn Sie mathematische Operationen mit den Elementen durchführen müssen, kann eine Liste verwendet werden, da Sie die Elemente direkt mathematisch bearbeiten können. Da eine Liste in der Größe verändert werden kann, kann sie zum Speichern der Daten verwendet werden, wenn Sie sich über die Anzahl der zu speichernden Elemente nicht sicher sind. Die Listenelemente sind leicht veränderbar und können im Gegensatz zu set und dictionary auch doppelte Elemente speichern.