Aller au contenu principal
🔒 Mode aperçu. Les quinze premières leçons Foundations sont gratuites ; celle-ci est Pro. Démarrez un trial de 7 jours pour débloquer l'éditeur, les conseils AI et le reste du programme. Carte requise, annulez à tout moment dans Dashboard.Démarrer le trial de 7 jours →
← CoursSenior Deep-DivesModule 7 · Memory, GC, modern typingfunctools.singledispatch — type-dispatched generic functionspredict121 / 161
+150 XP
Tâche
📝 **Tâche :** Prédisez le résultat exact. La fonction « describe » est distribuée sur le type de son premier argument. Regardez attentivement le dernier appel — `True` est un `bool`, qui hérite de `int`. Il n'y a pas de gestionnaire `bool` enregistré, donc la marche MRO achemine l'appel vers le gestionnaire `int`. 📋 Implémentez la fonction ci-dessus. Les tests s'exécutent automatiquement. 💡 **Indice :** Relisez la théorie si vous êtes bloqué.
Prédis la sortie

Lis le code attentivement

from functools import singledispatch


@singledispatch
def describe(value: object) -> str:
    return f"unknown: {value!r}"


@describe.register
def _(value: int) -> str:
    return f"int: {value}"


@describe.register
def _(value: list) -> str:
    return f"list of {len(value)}"


@describe.register
def _(value: dict) -> str:
    return f"dict with keys {sorted(value)}"


print(describe(42))
print(describe([1, 2, 3]))
print(describe({"b": 2, "a": 1}))
print(describe(3.14))
print(describe(True))

Que va afficher le programme ? Écris ici :

💬 Discussion

Soyez le premier à poser une question ou partager une astuce.
Connectez-vous pour rejoindre la discussion. La lecture est gratuite.
Chargement de la discussion…