Créer une fonction ayant un comportement différent suivant le type de ses paramètres

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
86
Mois de parution
septembre 2016
Domaines


Résumé
L'objectif : Nous souhaitons créer une fonction réagissant différemment suivant que l'on utilise des entiers ou des chaînes de caractères en paramètre. Pour cela, nous allons définir une fonction permettant d'ajouter soit deux entiers et le résultat sera la somme, soit deux chaînes de caractères et le résultat sera la somme des valeurs ASCII des caractères des deux chaînes.

La solution

01: from functools import singledispatch
02: 
03: @singledispatch
04: def add(a, b):
05:     raise NotImplementedError('Les types fournis ne sont pas supportés!')
06: 
07: @add.register(int)
08: def _(a, b):
09:     return a + b
10: 
11: @add.register(str)
12: def _(a, b):
13:     return sum(list(map(ord, a)) + list(map(ord, b)))
14: 

Cet article est réservé aux abonnés. Il vous reste 90% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Programmation avec le 6502 : les sprites de la NES, ou comment coder le jeu Pac-Man

Magazine
Marque
Hackable
Numéro
36
Mois de parution
janvier 2021
Domaines
Résumé

Dans le précédent article, nous avons commencé à nous familiariser avec la partie graphique de la console NES (Nintendo Entertainment System). Aujourd’hui, nous allons réaliser un véritable jeu, ou du moins nous allons suffisamment le débuter pour qu’il commence à être intéressant.

Analyse de code avec Cppcheck (et intégration sous Eclipse)

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

Zut ! Encore un plantage !!! Combien de fois n’avez vous pas prononcé cette phrase, face au blocage d’une application de bureautique bien connue ou face à un crash système ? Sur un ordinateur de bureau, ce type de désagrément n’a d’autre effet que de faire monter votre niveau d’énervement, mais dans le cas d’un système embarqué, les effets sont bien plus graves. Heureusement, Cppcheck est là pour vous aider.

Réinvention de la roue... des temporisations

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

Les temporisations sont essentielles au sein des systèmes d'exploitation et dans certaines applications, pour déclencher des actions à l'échéance d'un délai. Il existe différents algorithmes pour les gérer de manière efficace. Cet article présente la fusion de deux d'entre eux, pour en tirer le meilleur.