Что выведет код Middle Декораторы обновлено
Статистика lru_cache
Вопрос
Что выведет код? По строке на каждый print.
from functools import lru_cache
@lru_cache(maxsize=2)
def sq(x):
print('calc', x)
return x * x
sq(1); sq(2); sq(1); sq(3); sq(2)
print(sq.cache_info().hits, sq.cache_info().misses)
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: calc 1, calc 2, calc 3, calc 2, 1 4. sq(1) и sq(2) промахи. sq(1) попадание и делает 1 самым свежим. sq(3) промах, кеш на 2 элемента вытесняет самый давний, это 2.
Что выведет
calc 1
calc 2
calc 3
calc 2
1 4
Разбор
sq(1) и sq(2) промахи. sq(1) попадание и делает 1 самым свежим. sq(3) промах, кеш на 2 элемента вытесняет самый давний, это 2. Поэтому последний sq(2) снова считается. Итого 1 попадание и 4 промаха.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.