Comment implémenter les fonctions Switch Case en Python ? [2022]
Publié: 2021-01-08Table des matières
introduction
Vous êtes-vous déjà demandé s'il existait une alternative pour écrire ces instructions complexes If-else en Python ? Si vous ne voulez pas que plusieurs instructions 'If' encombrent votre code, vous devriez envisager d'utiliser l'instruction Switch case qui fournit un moyen plus propre et plus rapide d'implémenter le flux de contrôle dans votre code. Contrairement à C++, Java, Ruby et à d'autres langages de programmation, Python ne fournit pas d'instruction switch case, mais il propose peu de solutions de contournement pour que cette instruction fonctionne.
Par exemple, Python vous permet de créer vos extraits de code qui fonctionnent comme des instructions de cas Python Switch dans les autres langages de programmation. Vous en apprendrez plus sur les façons d'implémenter les instructions switch-case plus loin dans ce blog. Si vous souhaitez en savoir plus sur Python, consultez nos cours de science des données.
Qu'est-ce qu'une instruction Switch en Python ?
En général, le commutateur est un mécanisme de contrôle qui teste la valeur stockée dans une variable et exécute les instructions case correspondantes. L'instruction Switch case introduit un flux de contrôle dans votre programme et garantit que votre code n'est pas encombré par plusieurs instructions "if".
Par conséquent, votre code semble méticuleux et transparent pour les téléspectateurs. C'est une merveilleuse fonctionnalité de programmation que les programmeurs utilisent pour implémenter le flux de contrôle dans leur code. L'instruction Switch case fonctionne en comparant les valeurs spécifiées dans les instructions case avec les variables de votre code.
Comment implémenter l'instruction Python Switch Case
Si vous avez toujours codé dans des langages comme C++ ou Java, vous trouverez peut-être étrange que Python n'ait pas d'instruction switch case. Au lieu de cela, Python propose de nombreuses solutions de contournement comme un dictionnaire, des classes Python ou des fonctions Python lambda pour implémenter des instructions switch-case.
Si vous voulez connaître la raison exacte de l'absence d'instruction switch case en python, vous devez vérifier PEP 3103 .
Avant de plonger dans ces alternatives, voyons d'abord comment une fonction de cas de commutation fonctionne généralement dans d'autres langages de programmation.
Dans l'exemple ci-dessous, nous avons utilisé le langage de programmation C
basculer (moisDeAnnée) { cas 1: printf("%s", janvier); Pause; cas 2 : printf("%s", février); Pause; cas 3 : printf("%s", mars); Pause; cas 4 : printf("%s", avril); Pause; cas 5 : printf("%s", mai); Pause; cas 6 : printf("%s", juin); Pause; cas 7 : printf("%s", juillet); Pause; cas 8 : printf("%s", août); Pause; cas 9 : printf("%s", septembre); Pause; cas 10 : printf("%s", octobre); Pause; cas 11 : printf("%s", novembre); Pause; cas 12 : printf("%s", décembre); Pause; défaut: printf("Mois incorrect"); Pause; } |
Maintenant, allons plus loin dans les alternatives de la fonction Python switch case et comprenons comment ces alternatives fonctionnent à l'aide d'exemples.
Lis : Opportunités de carrière en Python : tout ce que vous devez savoir
Utilisation du mappage de dictionnaire
Si vous connaissez d'autres langages de programmation, vous devez savoir que le dictionnaire utilise des paires clé-valeur pour stocker un groupe d'objets en mémoire. Lorsque vous utilisez un dictionnaire comme alternative aux instructions switch-case, les clés de la paire clé-valeur fonctionnent comme un cas.
L'exemple suivant montre l'implémentation de l'instruction switch case à l'aide d'un dictionnaire. Ici, nous définissons une fonction month() pour imprimer quel mois correspond à un mois de l'année.
Tout d'abord, commencez par créer des instructions de cas et écrivez des fonctions individuelles pour chaque cas. Assurez-vous que vous écrivez une fonction qui s'attaque au cas par défaut.
def janvier() : retour "janvier" def février() : retour "février" def mars() : retour "marcher" def avril() : retour "avril" def may() : retour "peut" def juin() : retour "juin" def juillet() : retour "juillet" def août() : retour "août" def septembre() : retour "septembre" def octobre() : retour "Octobre" def novembre() : retour "novembre" def décembre() : retour "décembre" def par défaut() : renvoie "Mois incorrect" |
Ensuite, créez un objet dictionnaire en Python et stockez toutes les fonctions que vous avez définies dans votre programme.
commutateur = { 0 : 'janvier', 1 : 'février', 2 : 'marcher', 3 : 'avril', 4: 'peut', 5 : 'juin', 6: 'juillet', 7: 'août', 8: 'septembre', 9: 'octobre', 10: 'novembre', 11: 'décembre' } |
Enfin, créez une fonction de commutation dans votre programme qui doit accepter un entier comme entrée, effectuer une recherche dans le dictionnaire et appeler les fonctions correspondantes.
def mois(monthOfYear): return switcher.get(monthOfYear, default)() |
Le code complet ressemblera à ceci
def janvier() : retour "janvier" def février() : retour "février" def mars() : retour "marcher" def avril() : retour "avril" def may() : retour "peut" def juin() : retour "juin" def juillet() : ![]() retour "juillet" def août() : retour "août" def septembre() : retour "septembre" def octobre() : retour "Octobre" def novembre() : retour "novembre" def décembre() : retour "décembre" def par défaut() : renvoie "Mois incorrect"
commutateur = { 0 : 'janvier', 1 : 'février', 2 : 'marcher', 3 : 'avril', 4: 'peut', 5 : 'juin', 6: 'juillet', 7: 'août', 8: 'septembre', 9: 'octobre', 10: 'novembre', 11: 'décembre' } def mois(monthOfYear): return switcher.get(monthOfYear, default)() imprimer (changer (1)) impression (commutateur (0)) |
Le code ci-dessus imprime la sortie suivante
février janvier |
Lisez aussi: 42 idées et sujets de projets Python passionnants pour les débutants
Utilisation des classes Python
Vous pouvez également utiliser des classes Python comme alternative à l'implémentation d'instructions switch-case. Une classe est un constructeur d'objet qui possède des propriétés et des méthodes. Comprenons cela davantage à l'aide du même exemple ci-dessus. Ici, nous allons définir une méthode switch dans une classe switch Python.
Exemple
Tout d'abord, nous allons définir une méthode switch dans une classe switch Python qui prend un mois de l'année comme argument, convertit le résultat en une chaîne.
classe PythonSwitch : def mois(self, monthOf Year): par défaut = "Mois incorrect" return getattr(self, 'case_' + str(monthOf Year), lambda: default)() |
Remarque : Dans l'exemple ci-dessus, nous avons utilisé deux éléments : le mot-clé lambda et la méthode getattr().
- Nous utilisons le mot-clé lambda pour définir une fonction anonyme en Python. Le mot-clé Lambda appelle la fonction par défaut lorsqu'un utilisateur saisit une entrée non valide.
- La méthode getattr() est utilisée pour invoquer une fonction en Python.
Maintenant, créez des fonctions individuelles pour chaque cas.
def janvier (auto): retour "janvier"
def février(self): retour "février" def mars(self): retour "mars"
def avril (auto): retour "avril"
def may(self): retour "mai"
def juin (auto): retour "juin" def juillet (auto): retour "juillet"
def août(self): retour « août »
def septembre(self): retour "septembre" def octobre(self): retour "Octobre"
def novembre (auto): retour "novembre"
def décembre (auto): retour "décembre" |
Le code complet ressemblera à ceci
classe PythonSwitch : def mois(self, monthOf Year): par défaut = "Mois incorrect" return getattr(self, 'case_' + str(monthOf Year), lambda: default)() def janvier (auto): retour "janvier"
def février(self): retour "février"
def mars(self): retour "mars"
def avril (auto): retour "avril"
def may(self): retour "mai"
def juin (auto): retour "juin" def juillet (auto): retour "juillet"
def août(self): retour « août »
def septembre(self): retour "septembre" def octobre(self): retour "Octobre"
def novembre (auto): retour "novembre"
def décembre (auto): retour "décembre" my_switch = PythonSwitch() print (my_switch.month(1)) imprimer (my_switch.month(10)) |
Le code ci-dessus imprime la sortie suivante
janvier octobre |
Départ : salaire d'un développeur Python en Inde
Conclusion
Dans ce blog, vous avez appris les instructions switch-case, quelles sont les alternatives des instructions switch-case et comment les utiliser. Comme expliqué ci-dessus, Python n'a pas de fonction de changement de cas intégrée, mais vous pouvez toujours utiliser ces alternatives pour rendre votre code propre et net et obtenir de meilleures performances.
Si vous êtes curieux d'en savoir plus sur la science des données, consultez le programme Executive PG en science des données de IIIT-B & upGrad qui est créé pour les professionnels en activité et propose plus de 10 études de cas et projets, des ateliers pratiques, un mentorat avec des experts de l'industrie, 1 -on-1 avec des mentors de l'industrie, plus de 400 heures d'apprentissage et d'aide à l'emploi avec les meilleures entreprises.
Faites la différence entre un dictionnaire ordinaire et un dictionnaire Python.
Python Dictionary ou "Dict" est une structure de données intégrée de Python qui est utilisée pour stocker une collection non ordonnée d'éléments. Contrairement aux autres structures de données Python qui stockent des valeurs uniques, la structure de données du dictionnaire stocke des paires clé-valeur où chaque clé est unique. Il ne se souvient pas de l'ordre d'insertion des paires clé-valeur et parcourt les clés. D'autre part, un dictionnaire ordonné ou OrderedDict conserve une trace de l'ordre d'insertion des paires clé-valeur. Il consomme également plus de mémoire qu'un dictionnaire ordinaire en Python en raison de son implémentation de liste à double liaison. Si vous supprimez et réinsérez la même clé, elle sera insérée dans sa position d'origine car OrderedDict se souvient de l'ordre d'insertion.
Quelles opérations de namedtuple en font une option pratique à utiliser pour les cas de commutation ?
Le namedtuple en Python effectue diverses opérations. Voici une liste de certaines des opérations les plus courantes effectuées par le namedtuple. Les éléments d'un tuple nommé sont accessibles par leurs indices, contrairement à un dictionnaire. L'autre moyen d'accéder aux éléments est par leur nom de clé. La fonction make() renvoie un tuple nommé. La fonction _asadict() renvoie un dictionnaire ordonné qui est construit à partir des valeurs mappées. La fonction _replace() prend un nom de clé comme argument et modifie les valeurs qui lui sont mappées. La fonction _fileds() renvoie tous les noms de clé du tuple nommé donné.
Quand préférons-nous les listes pour stocker des données ?
La liste Python est considérée comme la meilleure structure de données pour stocker les données dans les scénarios suivants - Une liste peut être utilisée pour stocker diverses valeurs avec différents types de données et est accessible uniquement par leurs indices respectifs. Lorsque vous avez besoin d'effectuer des opérations mathématiques sur les éléments, une liste peut être utilisée car elle vous permet d'opérer mathématiquement les éléments directement. Puisqu'une liste peut être redimensionnée, elle peut être utilisée pour stocker les données lorsque vous n'êtes pas certain du nombre d'éléments à stocker. Les éléments de la liste sont facilement mutables et peuvent également stocker des éléments en double, contrairement à l'ensemble et au dictionnaire.