Przejdź do treści głównej
🔒 Tryb podglądu. Pierwszych piętnaście lekcji Foundations jest darmowych; ta jest Pro. Rozpocznij 7-dniowy trial, aby odblokować edytor, podpowiedzi AI i resztę kursu. Wymagana karta, anulujesz w dowolnym momencie w Dashboard.Rozpocznij 7-dniowy trial →
← KursySenior Deep-DivesModule 7 · Memory, GC, modern typingfunctools.singledispatch — type-dispatched generic functionspredict121 / 161
+150 XP
Zadanie
📝 **Zadanie:** Przewiduj dokładny wynik. Funkcja „opisz” wywołuje typ swojego pierwszego argumentu. Przyjrzyj się uważnie ostatniemu wywołaniu — „True” to „bool”, który dziedziczy po „int”. Nie ma zarejestrowanej procedury obsługi `bool`, więc spacer MRO kieruje wywołanie do procedury obsługi `int`. 📋 Zaimplementuj powyższą funkcję. Testy uruchamiają się automatycznie. 💡 **Wskazówka:** Jeśli utkniesz, przeczytaj ponownie teorię.
Przewiduj wynik

Przeczytaj kod uważnie

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))

Co wypisze program? Napisz tutaj:

💬 Dyskusja

Zadaj pierwsze pytanie lub podziel się wskazówką.
Zaloguj się aby dołączyć do dyskusji. Czytanie jest darmowe.
Ładowanie dyskusji…