Pourquoi ne pas Python ont switch-case?
Je suis un débutant en Python.
Veuillez expliquer pourquoi python n'a pas de cas de commutateur?
Ils ne sont pas très utiles. Il est plus sûr de coller avec
Pour contourner le problème, vous pouvez vous référer à Est-il de la valeur à un Switch / Case de mise en œuvre en Python?
Related post - des Remplacements pour instruction switch en Python?
if... elif
que switch
. Ils conduisent à d'horribles bugs si vous n'êtes pas prudent.Pour contourner le problème, vous pouvez vous référer à Est-il de la valeur à un Switch / Case de mise en œuvre en Python?
Related post - des Remplacements pour instruction switch en Python?
OriginalL'auteur T1412 | 2017-10-12
Vous devez vous connecter pour publier un commentaire.
Nous avons considéré, à un moment, mais sans avoir une façon de déclarer nommé constantes, il n'existe aucun moyen pour générer un efficace de sauter de la table. Donc, tout nous serait laissé avec le sucre syntaxique pour quelque chose que nous pourrions déjà faire avec si-elif-elif-d'autre chaînes.
Voir PEP 275 et PEP 3103 pour une discussion approfondie.
À peu près la raison en est que les diverses propositions qui ont échoué à l'expections à propos de ce cas de commutateur, et ils n'ont pas réussi à améliorer les solutions existantes (comme un dictionnaire d'expédition, si-elif-chaînes, getattr de répartition, ou à l'ancienne polymorphisme de l'expédition d'objets avec différentes implémentations pour la même méthode).
case 1:
est assez constante, mais sans nom constantes, vous auriez à utiliser des numéros de magie partout, et nous ne voulons pas d'une syntaxe de construire qui encourage les numéros de magie.OriginalL'auteur Raymond Hettinger
Il n'y a littéralement une section dans les docs de répondre à cette question. Voir ci-dessous:
Pourquoi n'est-il pas un switch ou d'un cas de déclaration en Python?
TL;DR: les alternatives existantes (dynamic dispatch via
getattr
oudict.get
,if
/elif
chaînes) couvrir tous les cas d'utilisation de l'amende juste.OriginalL'auteur wim
Vous pouvez l'utiliser comme interrupteur de cas en python et si la condition de ne pas correspondre à il sera de retour par défaut si la condition de ne pas correspondre à
OriginalL'auteur vedant patel