Naloge: Dekoratorji
Napiši funkcijo za izračun n-tega Fibonacijevega števila v rekurzivni obliki (n-to Fibonacijevo število je enako vsoti n-1-tega in n-2-tega. Prvo in drugo Fibonacijevo število je 0.) Poskusi izračunati deseto, dvanajsto, štirinajsto ... ... število. Kako narašča čas računanja? Kako velika števila lahko še izračunaš v doglednem času?
Dodaj dekorator
@lru_cache
. Kako hitro se števila računajo zdaj?Napiši funkcijo
vsota(s)
, ki vrne vsoto elementov vs
. Če jes
slučajno slovar, naj vrne vsoto vrednosti v tem slovarju, ne vsoto ključev. Če jes
niz, naj ga razcepi (split
), pretvori kose v števila in jih sešteje.Če v prejšnji točki še nisi naredil(a) tako: reši jo z uporabo dekoratorja
@singledispatch
.
Napiši dekorator
@zaokrozena3
, ki poskrbi, da je rezultat dekorirane funkcije zaokrožen na tri decimalke.Napiši dekorator
@dump
, ki pokliče dekorirano funkcijo s podanimi argumenti, nato pa izpiše ime klicane funkcije, njene argumente in rezultat. Če, recimo, pokličemofibo(6, b=1)
in funkcija vrne8
, se mora mimogrede (po dekoratorjevi zaslugi) izpisatifibo(6, b=1) -> 8
.