Remplacements pour instruction switch en Python?

Je veux écrire une fonction Python qui retourne différentes valeurs fixes basés sur la valeur d'une entrée d'index.

Dans d'autres langues, je voudrais utiliser une switch ou case déclaration, mais Python ne semble pas avoir un switch déclaration. Ce sont recommandés en Python solutions dans ce scénario?

  • Liés à la PPE, écrit par Guido lui-même: PEP 3103
  • Dans ce PEP, Guido ne pas mentionner que si/elif chaînes sont également une source classique de l'erreur. C'est un très fragiles construire.
  • Absent de toutes les solutions ici est la détection de dupliquer le cas des valeurs. L'échec rapide de principe, c'est peut être une plus importante perte de rendement ou de la fallthrough fonctionnalité.
  • Toutes les solutions apportées sont vraiment laid... switch cas est si propre, lorsque la lecture. Ne peut pas comprendre pourquoi il n'est pas implémenté en Python.
  • switch est en fait plus "polyvalent" que quelque chose de retour différentes valeurs fixes basés sur la valeur d'une entrée d'index. Elle permet différents morceaux de code à exécuter. Il ne fait même pas besoin de retourner une valeur. Je me demande si certaines des réponses ici sont de bons remplaçants pour un général switch déclaration, ou seulement pour le cas de renvoi de valeurs, sans aucune possibilité de l'exécution générale des morceaux de code.
  • d'accord. Si vous n'êtes pas de retour ou de la rupture de votre switch case énoncé de l'ensemble du code dans les autres cas seront exécutées. C'est clairement pas la même que d'une collection de si/elseifs
  • Fragile construire, comme une boucle while est un fragile de construire si vous essayez de l'utiliser pour faire ce for...in... ne. Allez-vous appeler les programmeurs faible pour l'utilisation des boucles for? Tandis que les boucles sont tout ce qu'ils ont réellement besoin. Mais pour les boucles de montrer l'intention claire de sauver inutile standard et de donner la possibilité de créer des abstractions.
  • De la même manière, la syntaxe comme le Rubis est le cas...quand... (ou Scala match, Haskell cas, Perl donné/quand) répondre à une commune de cas d'utilisation et offre un puissant abstraction. if...elif... est un pauvre substitut.
  • Je n'ai pas assez sur Haskell ou Ruby, et rien du tout à propos de Perl et de la Scala, de sorte que nous devons arrêter ce débat pour l'instant, mais je ne peux pas aider mais se sentir comme ce est l'opinion plus que de la réalité. Pourrait être amusant et intéressant. Des acclamations.
  • Python aphorisme que "explicite est mieux qu'implicite" est ce que l'on fait tomber dans Python non-standard. Je ne sais pas si je dois être triste ou heureux 😐