"Pythonic" -Äquivalent für die Handhabung von Switch- und mehreren String-Vergleichen

8

Alles klar, mein Titel hat also gesaugt. Ein Beispiel funktioniert besser:

%Vor%

Ich möchte die Eingabe analysieren, indem ich das erste Wort als "Befehl" und den Rest der Zeichenfolge als Parameter verwende. Hier ist die einfache Version, wie mein nicht-pythonischer Verstand es kodiert:

%Vor%

Ich mag Python, weil es normalerweise komplizierte Dinge zu ziemlich einfachen Dingen macht. Ich bin nicht allzu erfahren darin, und ich bin mir ziemlich sicher, dass es einen viel besseren Weg gibt, diese Dinge zu tun ... ein bisschen pythonischer. Ich habe einige Beispiele von Leuten gesehen, die Switch-Statements durch Dicts und Lambda-Funktionen ersetzen, während andere Leute nur empfehlen, wenn sie Nester verschachteln.

    
Tom 13.03.2009, 04:31
quelle

6 Antworten

31
%Vor%     
Markus Jarderot 13.03.2009, 04:37
quelle
4
  

Ich bin ziemlich sicher, dass es einen viel besseren Weg gibt, diese Dinge zu tun ... irgendwie pythonischer.

Nicht wirklich. Du Code ist einfach, klar, offensichtlich und Englisch-ähnlich.

  

Ich habe einige Beispiele von Leuten gesehen, die Schaltanweisungen durch Dicts und Lambda-Funktionen ersetzen,

Ja, Sie haben sie gesehen und sie sind nicht klar, offensichtlich oder Englisch. Sie existieren, weil einige Leute ihre Hände über die Switch-Anweisung ringen.

  

während andere Leute einfach empfehlen, wenn ..else Nester.

Richtig. Sie arbeiten. Sie sind einfach, klar, ...

Dein Code ist gut. Lass es in Ruhe. Geh weiter.

    
S.Lott 13.03.2009 10:08
quelle
3

Damit vermeiden Sie es, jeden Befehlsnamen zweimal anzugeben; Funktionsnamen werden fast direkt als Befehlsnamen verwendet.

%Vor%     
rob mayoff 13.03.2009 05:50
quelle
0

Wenn Sie nach einem "pythischen" Ansatz für einen einzelnen Liner suchen, können Sie dies verwenden:

%Vor%     
adam 13.03.2009 05:11
quelle
0

Missachtung, ich habe gerade gemerkt, dass meine Antwort einer der anderen Antworten ähnlich ist - und anscheinend gibt es keinen Löschschlüssel:)

    
John C 16.03.2009 02:06
quelle
0

Variation auf @ MizardX's Antwort :

%Vor%     
jfs 13.06.2009 17:05
quelle

Tags und Links