Je me souviens qu'à une époque ancienne, un Larry Walls inexpérimenté avait déclaré que Perl n'avait pas besoin d'une construction de type "case switch" parce qu'elle pouvait être réalisée de la même manière avec : "if - elif - elif .... else". À l'époque, Perl n'était rien d'autre qu'un simple outil de script pour les petits pirates. Bien sûr, le Perl d'aujourd'hui a une construction switch.
Il n'est pas surprenant que quelques décennies plus tard, la nouvelle génération d'enfants avec leurs nouveaux jouets soit condamnée à répéter la même déclaration stupide.
C'est une question de maturité, les gars. Il aura éventuellement une construction de cas. Et quand python aura suffisamment mûri en tant que langage de programmation, comme le FORTRAN/Pascal et le C et tous les langages qui en sont dérivés, il aura même une instruction "goto" :)
BTW. Habituellement, le case switch est traduit en asm par un saut indirect vers la liste d'adresses des cas respectifs. C'est un saut inconditionnel, ce qui signifie qu'il est beaucoup plus efficace que de le comparer d'abord (en évitant les erreurs de prédiction de branche), même dans quelques cas seulement, il est considéré comme plus efficace. Pour une douzaine ou plus (jusqu'à des centaines dans l'extrait de code pour un pilote de périphérique), l'avantage de la construction est incontestable. Je suppose que Larry Walls ne parlait pas assembleur à l'époque.
3 votes
Ils ne sont pas très utiles. Il est plus sûr de rester avec
if... elif
queswitch
. Ils conduisent à des bugs horribles si vous ne faites pas attention.0 votes
Pour une solution de contournement, vous pouvez vous référer à Y a-t-il un intérêt à implémenter un Switch / Case en Python ?
0 votes
Poste connexe - Remplacement de l'instruction switch en Python ?
3 votes
Je ne pourrais pas être plus en désaccord avec Unni. Peut-être que les mauvais programmeurs ne peuvent pas utiliser efficacement les commutateurs, mais personnellement je n'ai pas eu de problèmes majeurs avec eux. C'est bien plus lourd et bien moins agréable d'écrire et de lire un tas de fichiers
if... elif elif elif elif elif