2017-10-12 1 views
6

Ich bin ein Neuling in Python. Bitte erklären Sie, warum Python nicht Switch-Case hat?Warum hat Python keinen Switch-Case?

Vielen Dank

+2

passen Sie sind nicht sehr hilfreich. Es ist sicherer mit 'if ... elif' zu bleiben als mit' switch'. Sie führen zu schrecklichen Bugs, wenn Sie nicht vorsichtig sind. – Unni

+0

Für eine Workaround können Sie beziehen sich auf [Gibt es einen Wert für eine Switch/Case-Implementierung in Python?] (Https://stackoverflow.com/q/5440990/6521116) –

Antwort

18

Wir hielten es an einem Punkt, aber ohne einen Weg, mit dem Namen Konstanten zu erklären, gibt es keine Möglichkeit, eine effiziente Sprungtabelle zu erzeugen. Alles was uns bleibt, ist also syntaktischer Zucker für etwas, das wir schon mit if-elif-elif-else-Ketten machen könnten.

Eine vollständige Diskussion finden Sie unter PEP 275 und PEP 3103.

Grob ist die Begründung, dass die verschiedenen Vorschläge nicht den Erwartungen der Leute entsprechen, was switch-case tun würde, und sie konnten existierende Lösungen nicht verbessern (wie wörterbuchbasierter Versand, if-elif-chains, getat- basierter Versand oder altmodischer Polymorphismus-Versand an Objekte mit unterschiedlichen Implementierungen für die gleiche Methode).

+2

'Fall 1:' ist ziemlich konstant, aber ohne * benannte * Konstanten, du müsstest überall magische Zahlen verwenden, und wir wollen kein Syntax-Konstrukt, das magische Zahlen anregt. – user2357112

0

Obwohl Java, C++, C# Unterstützung den sie, ich habe noch nie verwendet switch statements, wie ich die gleiche Arbeit mit verketteten wenn Aussagen gemacht zu bekommen.

+2

Beantwortet die Frage nicht ... – qwr

+0

Auch wenn es nicht die Frage 1: 1 beantwortet, ist es eine starke Aussage, die als Maß verwendet werden kann, um zu erraten, ob es veraltet ist oder nicht oder nicht. Hattest du jemals den Fall, wo du nach einer "switch" Aussage gesucht hast? – user1767754

+0

Weil Sie nie ein Leistungsproblem benötigen (noob) :( –

1
def f(x): 
    return { 
     1 : 'output for case 1', 
     2 : 'output for case 2', 
     3 : 'output for case 3' 
    }.get(x, 'default case') 

können Sie diese verwenden, wie Schaltergehäuse in Python und wenn die Bedingung nicht entsprechen, werden die Standardeinstellungen zurückgesetzt, wenn die Bedingung nicht

Verwandte Themen